Introduzione: Configurare Ansible in una macchina virtuale di Azure

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Questo articolo illustra come installare Ansible in una macchina virtuale Centos in Azure.

In questo articolo vengono illustrate le operazioni seguenti:

  • Creare un gruppo di risorse
  • Creare una macchina virtuale CentOS
  • Installare Ansible nella macchina virtuale
  • Connettersi alla macchina virtuale tramite SSH
  • Configurare Ansible nella macchina virtuale

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Entità servizio di Azure: creare un'entità servizio, prendere nota dei valori seguenti: appId, displayName, password e tenant.

Creare una macchina virtuale

  1. Crea gruppo di risorse di Azure.

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

    Potrebbe essere necessario sostituire il parametro --location con il valore appropriato per l'ambiente.

  2. Creare la macchina virtuale di Azure per Ansible.

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

    Sostituire la <password> password.

  3. Ottenere l'indirizzo IP pubblico della macchina virtuale di Azure.

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

Connettersi alla macchina virtuale tramite SSH

Usando il comando SSH, connettersi all'indirizzo IP pubblico della macchina virtuale.

ssh azureuser@<vm_ip_address>

<vm_ip_address> Sostituire con il valore appropriato restituito nei comandi precedenti.

Installare Ansible nella macchina virtuale

Ansible 2.9 con il modulo azure_rm

Eseguire i comandi seguenti per configurare Ansible 2.9 in 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 con azure.azcollection

Eseguire i comandi seguenti per configurare Ansible in 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 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

Punti principali:

  • Il nodo di controllo Ansible richiede Python 2 (versione 2.7) o Python 3 (versioni 3.5 e successive) installato. Ansible 4.0.0 e ansible-core 2.11 ha una dipendenza temporanea da Python 3.8, ma funziona con versioni precedenti. Tuttavia, Ansible 5.0.0 e ansible-core 2.12 richiederanno 3.8 e versioni successive.

Creare credenziali di Azure

Per configurare le credenziali di Ansible, sono necessarie le informazioni seguenti:

  • ID sottoscrizione e ID tenant di Azure
  • ID applicazione e segreto dell'entità servizio

Configurare le credenziali di Ansible con una delle tecniche seguenti:

Opzione 1: Creare un file di credenziali Ansible

In questa sezione viene creato un file di credenziali locale per fornire credenziali ad Ansible. Per motivi di sicurezza, i file di credenziali devono essere usati solo negli ambienti di sviluppo.

Per altre informazioni su come definire le credenziali di Ansible, vedere Providing Credentials to Azure Modules (Fornire le credenziali ai moduli di Azure).

  1. Dopo avere completato correttamente la connessione alla macchina virtuale host, creare e aprire un file denominato credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Inserire le righe seguenti nel file. Sostituire i segnaposto con i valori dell'entità servizio.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Salva e chiudi il file.

Opzione 2: Definire le variabili di ambiente Ansible

Nella macchina virtuale host esportare i valori dell'entità servizio per configurare le credenziali di Ansible.

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>

Testare l'installazione di Ansible

È ora disponibile una macchina virtuale con Ansible installato e configurato.

Questa sezione illustra come creare un gruppo di risorse di test all'interno della nuova configurazione di Ansible. Se non è necessario eseguire tale operazione, è possibile ignorare questa sezione.

Opzione 1: Usare un comando ansible ad hoc

Eseguire il comando Ansible ad hoc seguente per creare un gruppo di risorse:

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

Sostituire <resource_group_name> e <location> con i propri valori.

Opzione 2: Scrivere ed eseguire un playbook Ansible

  1. Salvare il codice seguente come create_rg.yml.

    Ansible 2.9 con modulo azure_rm

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

    Ansible 2.10 con azure.azcollection

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

    Sostituire <resource_group_name> e <location> con i propri valori.

  2. Eseguire il playbook con ansible-playbook.

    ansible-playbook create_rg.yml
    

Altre informazioni su azure.azcollection.

Pulire le risorse

  1. Salvare il codice seguente come delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Eseguire il playbook usando il comando ansible-playbook. Sostituire il segnaposto con il nome del gruppo di risorse da eliminare. Tutte le risorse presenti nel gruppo di risorse verranno eliminate.

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

    Punti principali:

    • A causa della variabile e debug della register sezione del playbook, i risultati vengono visualizzati al termine del comando.

Passaggi successivi