Erste Schritte: Konfigurieren von Ansible auf einer Azure-VM

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

In diesem Artikel wird gezeigt, wie Sie Ansible auf einer Centos-VM in Azure installieren.

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Erstellen einer Ressourcengruppe
  • Erstellen eines virtuellen CentOS-Computers
  • Installieren von Ansible auf dem virtuellen Computer
  • Herstellen einer Verbindung mit dem virtuellen Computer über SSH
  • Konfigurieren von Ansible auf dem virtuellen Computer

Voraussetzungen

  • Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Erstellen einer virtuellen Maschine

  1. Erstellen einer Azure-Ressourcengruppe.

    az group create --name QuickstartAnsible-rg --location eastus
    

    Möglicherweise müssen Sie den Parameter --location durch den entsprechenden Wert für Ihre Umgebung ersetzen.

  2. Erstellen Sie den virtuellen Azure-Computer für Ansible.

    az vm create \
    --resource-group QuickstartAnsible-rg \
    --name QuickstartAnsible-vm \
    --image CentOS85Gen2 \
    --admin-username azureuser \
    --admin-password <password>
    

    Ersetzen Sie <password> durch Ihr Kennwort.

  3. Rufen Sie die öffentliche IP-Adresse des virtuellen Azure-Computers ab.

    az vm show -d -g QuickstartAnsible-rg -n QuickstartAnsible-vm --query publicIps -o tsv
    

Herstellen einer Verbindung mit Ihrem virtuellen Computer per SSH

Verwenden Sie den SSH-Befehl, um eine Verbindung mit der öffentlichen IP-Adresse Ihres virtuellen Computers herzustellen.

ssh azureuser@<vm_ip_address>

Ersetzen Sie <vm_ip_address> durch den entsprechenden Wert, der in den vorherigen Befehlen zurückgegeben wurde.

Installieren von Ansible auf dem virtuellen Computer

Ansible 2.9 mit dem „azure_rm“-Modul

Führen Sie die folgenden Befehle aus, um Ansible 2.9 unter CentOS zu konfigurieren:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible.
pip3 install "ansible==2.9.17"

# Install Ansible azure_rm module for interacting with Azure.
pip3 install ansible[azure]

Ansible 2.10 mit „azure.azcollection“

Führen Sie die folgenden Befehle aus, um Ansible unter CentOS zu konfigurieren:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible az collection for interacting with Azure.
ansible-galaxy collection install azure.azcollection

# Install Ansible modules for Azure
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.txt

Die wichtigsten Punkte:

  • Für den Ansible-Steuerknoten muss Python 2 (Version 2.7) oder Python 3 (Version 3.5 und höher) installiert sein. Für Ansible 4.0.0 und ansible-core 2.11 besteht eine lose Abhängigkeit von Python 3.8, aber es können auch frühere Versionen genutzt werden. Für Ansible 5.0.0 und ansible-core 2.12 wird aber Version 3.8 oder höher benötigt.

Erstellen von Azure-Anmeldeinformationen

Um die Anmeldeinformationen für Ansible zu konfigurieren, benötigen Sie die folgenden Informationen:

  • Ihre Azure-Abonnement-ID und Mandanten-ID
  • Die Dienstprinzipalanwendungs-ID und der geheime Schlüssel

Konfigurieren Sie die Ansible-Anmeldeinformationen mithilfe einer der folgenden Methoden:

Option 1: Erstellen einer Datei mit Ansible-Anmeldeinformationen

In diesem Abschnitt erstellen Sie eine lokale Datei mit Anmeldeinformationen, um Anmeldeinformationen für Ansible bereitzustellen. Aus Sicherheitsgründen sollten Dateien mit Anmeldeinformationen ausschließlich in Entwicklungsumgebungen verwendet werden.

Weitere Informationen zum Definieren von Ansible-Anmeldeinformationen finden Sie unter Bereitstellen von Anmeldeinformationen für Azure-Module.

  1. Nachdem Sie erfolgreich eine Verbindung mit dem virtuellen Hostcomputer hergestellt haben, erstellen und öffnen Sie eine Datei mit dem Namen credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Fügen Sie in der Datei die folgenden Zeilen ein. Ersetzen Sie die Platzhalter durch die Werte für den Dienstprinzipal.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Speichern und schließen Sie die Datei.

Option 2: Definieren von Ansible-Umgebungsvariablen

Exportieren Sie auf dem virtuellen Hostcomputer die Werte für den Dienstprinzipal, um Ihre Ansible-Anmeldeinformationen zu konfigurieren.

export AZURE_SUBSCRIPTION_ID=<subscription_id>
export AZURE_CLIENT_ID=<service_principal_app_id>
export AZURE_SECRET=<service_principal_password>
export AZURE_TENANT=<service_principal_tenant_id>

Testen der Ansible-Installation

Sie verfügen nun über einen virtuellen Computer, auf dem Ansible installiert und konfiguriert ist!

In diesem Abschnitt wird gezeigt, wie Sie eine Testressourcengruppe in der neuen Ansible-Konfiguration erstellen. Ist dies nicht erforderlich, können Sie diesen Schritt überspringen.

Option 1: Verwenden eines Ansible-Ad-hoc-Befehls

Führen Sie den folgenden Ansible-Ad-hoc-Befehl aus, um eine Ressourcengruppe zu erstellen:

#Ansible 2.9 with azure_rm module
ansible localhost -m azure_rm_resourcegroup -a "name=ansible-test location=eastus"

#Ansible 2.10 with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"

Ersetzen Sie <resource_group_name> und <location> durch Ihre eigenen Werte.

Option 2: Schreiben und Ausführen eines Ansible-Playbooks

  1. Speichern Sie den folgenden Code als create_rg.yml.

    Ansible 2.9 mit „azure_rm“-Modul

    ---
    - hosts: localhost
      connection: local
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Ansible 2.10 mit „azure.azcollection“

    - hosts: localhost
      connection: local
      collections:
        - azure.azcollection
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Ersetzen Sie <resource_group_name> und <location> durch Ihre eigenen Werte.

  2. Führen Sie das Playbook mithilfe von ansible-playbook aus.

    ansible-playbook create_rg.yml
    

Informieren Sie sich über azure.azcollection.

Bereinigen von Ressourcen

  1. Speichern Sie den folgenden Code als delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Führen Sie das Playbook mithilfe des Befehls ansible-playbook aus. Ersetzen Sie den Platzhalter durch den Namen der zu löschenden Ressourcengruppe. Alle Ressourcen innerhalb der Ressourcengruppe werden gelöscht.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Die wichtigsten Punkte:

    • Aufgrund der Variablen register und des Abschnitts debug des Playbooks werden die Ergebnisse angezeigt, wenn der Befehl abgeschlossen ist.

Nächste Schritte