Introduzione: Configurare Ansible in una macchina virtuale di Azure

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

In questo articolo vengono illustrate le operazioni seguenti:

  • Creare un gruppo di risorse
  • Creare una macchina virtuale Ubuntu
  • 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 Ubuntu2204 \
    --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 con azure.azcollection

Eseguire i comandi seguenti per configurare Ansible in Ubuntu:

#!/bin/bash

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository --yes --update ppa:ansible/ansible

sudo apt install ansible

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

# Install Ansible modules for Azure (optional)
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.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 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 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