Aan de slag: Ansible configureren op een Azure-VM

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

In dit artikel wordt beschreven hoe u Ansible installeert op een Centos-VM in Azure.

In dit artikel leert u het volgende:

  • Een brongroep maken
  • Een virtuele CentOS-machine maken
  • Ansible installeren op de virtuele machine
  • Verbinding maken via SSH naar de virtuele machine
  • Ansible configureren op de virtuele machine

Vereisten

  • Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.

Maak een virtuele machine

  1. Maak een Azure-resourcegroep.

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

    Mogelijk moet u de --location parameter vervangen door de juiste waarde voor uw omgeving.

  2. Maak de virtuele Azure-machine voor Ansible.

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

    Vervang het <password> wachtwoord.

  3. Haal het openbare IP-adres van de virtuele Azure-machine op.

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

Verbinding maken via SSH naar uw virtuele machine

Gebruik de SSH-opdracht om verbinding te maken met het openbare IP-adres van uw virtuele machine.

ssh azureuser@<vm_ip_address>

Vervang de <vm_ip_address> waarde door de juiste waarde die in eerdere opdrachten is geretourneerd.

Ansible installeren op de virtuele machine

Ansible 2.9 met de module azure_rm

Voer de volgende opdrachten uit om Ansible 2.9 te configureren op Centos:

#!/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 met azure.azcollection

Voer de volgende opdrachten uit om Ansible op Centos te configureren:

#!/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

Belangrijkste punten:

  • Voor ansible-besturingsknooppunt is Python 2 (versie 2.7) of Python 3 (versie 3.5 en hoger) geïnstalleerd. Ansible 4.0.0 en ansible-core 2.11 heeft een zachte afhankelijkheid van Python 3.8, maar functies met lagere versies. Ansible 5.0.0 en ansible-core 2.12 vereisen echter 3.8 en hoger.

Azure-referenties maken

Als u de Ansible-referenties wilt configureren, hebt u de volgende informatie nodig:

  • Uw Azure-abonnements-id en tenant-id
  • De toepassings-id en het geheim van de service-principal

Configureer de Ansible-referenties met behulp van een van de volgende technieken:

Optie 1: Ansible-referentiesbestand maken

In deze sectie maakt u een lokaal referentiebestand om referenties aan Ansible op te geven. Om veiligheidsredenen mogen referentiebestanden alleen worden gebruikt in ontwikkelomgevingen.

Zie Referenties voor Azure-modules opgeven voor meer informatie over het definiëren van Ansible-referenties.

  1. Nadat u verbinding hebt gemaakt met de virtuele hostmachine, maakt en opent u een bestand met de naam credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Voeg de volgende regels in het bestand in. Vervang de tijdelijke aanduidingen door de waarden van de service-principal.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Sla het bestand op en sluit het bestand.

Optie 2: Ansible-omgevingsvariabelen definiëren

Exporteer op de virtuele hostmachine de waarden van de service-principal om uw Ansible-referenties te configureren.

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>

Ansible-installatie testen

U hebt nu een virtuele machine waarop Ansible is geïnstalleerd en geconfigureerd.

In deze sectie wordt beschreven hoe u een testresourcegroep maakt in uw nieuwe Ansible-configuratie. Als u dit niet hoeft te doen, kunt u deze sectie overslaan.

Optie 1: een ad-hoc ansible-opdracht gebruiken

Voer de volgende ad-hoc Ansible-opdracht uit om een resourcegroep te maken:

#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>"

Vervang <resource_group_name> en <location> door uw eigen waarden.

Optie 2: Een Ansible-playbook schrijven en uitvoeren

  1. Sla de volgende code op als create_rg.yml.

    Ansible 2.9 met azure_rm module

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

    Ansible 2.10 met azure.azcollection

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

    Vervang <resource_group_name> en <location> door uw eigen waarden.

  2. Voer het playbook uit met ansible-playbook.

    ansible-playbook create_rg.yml
    

Lees meer over de azure.azcollection.

Resources opschonen

  1. Sla de volgende code op 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. Voer het playbook uit met behulp van de ansible-playbook-opdracht . Vervang de tijdelijke aanduiding door de naam van de resourcegroep die u wilt verwijderen. Alle resources in de resourcegroep worden verwijderd.

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

    Belangrijkste punten:

    • Vanwege de register variabele en debug sectie van het playbook worden de resultaten weergegeven wanneer de opdracht is voltooid.

Volgende stappen