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
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.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.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
- Opzione 2: Definire le variabili di ambiente Ansible
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).
Dopo avere completato correttamente la connessione alla macchina virtuale host, creare e aprire un file denominato
credentials
:mkdir ~/.azure vi ~/.azure/credentials
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>
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
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.Eseguire il playbook con ansible-playbook.
ansible-playbook create_rg.yml
Altre informazioni su azure.azcollection.
Pulire le risorse
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
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
dellaregister
sezione del playbook, i risultati vengono visualizzati al termine del comando.
- A causa della variabile e