Installare e configurare Ansible per gestire le macchine virtuali in AzureInstall and configure Ansible to manage virtual machines in Azure

Ansible consente di automatizzare la distribuzione e la configurazione delle risorse nell'ambiente in uso.Ansible allows you to automate the deployment and configuration of resources in your environment. È possibile usare Ansible per gestire le macchine virtuali in Azure, così come si farebbe con qualsiasi altra risorsa.You can use Ansible to manage your virtual machines (VMs) in Azure, the same as you would any other resource. Questo articolo descrive come installare Ansible e i moduli di Azure Python SDK necessari per alcune delle distribuzioni di Linux più comuni.This article details how to install Ansible and the required Azure Python SDK modules for some of the most common Linux distros. È possibile installare Ansible in altre distribuzioni regolando i pacchetti installati per adattarli alla piattaforma specifica.You can install Ansible on other distros by adjusting the installed packages to fit your particular platform. Per creare le risorse di Azure in modo sicuro, si apprenderà anche come creare e definire le credenziali da usare con Ansible.To create Azure resources in a secure manner, you also learn how to create and define credentials for Ansible to use.

Per altre opzioni di installazione e la procedura per altre piattaforme, vedere la guida all'installazione di Ansible.For more installation options and steps for additional platforms, see the Ansible install guide.

Aprire Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. Gli strumenti comuni di Azure sono preinstallati e configurati in Cloud Shell per l'uso con l'account.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. È sufficiente selezionare il pulsante Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just select the Copy button to copy the code, paste it in Cloud Shell, and then press Enter to run it. Esistono alcuni modi per aprire Cloud Shell:There are a few ways to open Cloud Shell:

Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/bash
Selezionare il pulsante Cloud Shell nel menu nell'angolo superiore destro del portale di Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Cloud Shell nel portale

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, questo articolo richiede la versione 2.0.30 o successiva dell'interfaccia della riga di comando di Azure.If you choose to install and use the CLI locally, this article requires that you are running the Azure CLI version 2.0.30 or later. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

Installare AnsibleInstall Ansible

Uno dei modi più semplici per usare Ansible con Azure è con Azure Cloud Shell, un'esperienza shell basata sul browser per gestire e sviluppare le risorse di Azure.One of the easiest ways to use Ansible with Azure is with the Azure Cloud Shell, a browser-based shell experience to manage and develop Azure resources. Poiché Ansible è preinstallato in Cloud Shell, è possibile ignorare le istruzioni di installazione di Ansible e passare a Creare credenziali di Azure.Ansible is pre-installed in the Cloud Shell, so you can skip instructions on how to install Ansible and go to Create Azure credentials. Per un elenco di strumenti aggiuntivi disponibili in Cloud Shell, vedere Strumenti e funzionalità per Bash in Azure Cloud Shell.For a list of additional tools also available in the Cloud Shell, see Features and tools for Bash in the Azure Cloud Shell.

Le istruzioni seguenti illustrano come creare una VM Linux per distribuzioni diverse e quindi installare Ansible.The following instructions show you how to create a Linux VM for various distros and then install Ansible. Se non è necessario creare una VM Linux, ignorare il primo passaggio per creare un gruppo di risorse di Azure.If you don't need to create a Linux VM, skip this first step to create an Azure resource group. Se è necessario creare una VM, creare prima un gruppo di risorse con il comando az group create.If you do need to create a VM, first create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

A questo punto, selezionare una delle distribuzioni seguenti per i passaggi su come creare una macchina virtuale, se necessario, e quindi installare Ansible:Now, select one of the following distros for steps on how to create a VM, if needed, and then install Ansible:

CentOS 7.4CentOS 7.4

Se necessario, creare una VM con il comando az vm create.If needed, create a VM with az vm create. L'esempio seguente crea una macchina virtuale denominata myVMAnsible:The following example creates a VM named myVMAnsible:

az vm create \
    --name myVMAnsible \
    --resource-group myResourceGroup \
    --image OpenLogic:CentOS:7.4:latest \
    --admin-username azureuser \
    --generate-ssh-keys

SSH per la macchina virtuale con publicIpAddress indicato nell'output dall'operazione di creazione della macchina virtuale:SSH to your VM using the publicIpAddress noted in the output from the VM create operation:

ssh azureuser@<publicIpAddress>

Nella macchina virtuale installare i pacchetti richiesti per i moduli di Azure Python SDK e Ansible come segue:On your VM, install the required packages for the Azure Python SDK modules and Ansible as follows:

## Install pre-requisite packages
sudo yum check-update; sudo yum install -y gcc libffi-devel python-devel openssl-devel epel-release
sudo yum install -y python-pip python-wheel

## Install Ansible and Azure SDKs via pip
sudo pip install ansible[azure]

Passare ora a Creare le credenziali di Azure.Now move on to Create Azure credentials.

Ubuntu 16.04 LTSUbuntu 16.04 LTS

Se necessario, creare una VM con il comando az vm create.If needed, create a VM with az vm create. L'esempio seguente crea una macchina virtuale denominata myVMAnsible:The following example creates a VM named myVMAnsible:

az vm create \
    --name myVMAnsible \
    --resource-group myResourceGroup \
    --image Canonical:UbuntuServer:16.04-LTS:latest \
    --admin-username azureuser \
    --generate-ssh-keys

SSH per la macchina virtuale con publicIpAddress indicato nell'output dall'operazione di creazione della macchina virtuale:SSH to your VM using the publicIpAddress noted in the output from the VM create operation:

ssh azureuser@<publicIpAddress>

Nella macchina virtuale installare i pacchetti richiesti per i moduli di Azure Python SDK e Ansible come segue:On your VM, install the required packages for the Azure Python SDK modules and Ansible as follows:

## Install pre-requisite packages
sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip

## Install Ansible and Azure SDKs via pip
sudo pip install ansible[azure]

Passare ora a Creare le credenziali di Azure.Now move on to Create Azure credentials.

SLES 12 SP2SLES 12 SP2

Se necessario, creare una VM con il comando az vm create.If needed, create a VM with az vm create. L'esempio seguente crea una macchina virtuale denominata myVMAnsible:The following example creates a VM named myVMAnsible:

az vm create \
    --name myVMAnsible \
    --resource-group myResourceGroup \
    --image SUSE:SLES:12-SP2:latest \
    --admin-username azureuser \
    --generate-ssh-keys

SSH per la macchina virtuale con publicIpAddress indicato nell'output dall'operazione di creazione della macchina virtuale:SSH to your VM using the publicIpAddress noted in the output from the VM create operation:

ssh azureuser@<publicIpAddress>

Nella macchina virtuale installare i pacchetti richiesti per i moduli di Azure Python SDK e Ansible come segue:On your VM, install the required packages for the Azure Python SDK modules and Ansible as follows:

## Install pre-requisite packages
sudo zypper refresh && sudo zypper --non-interactive install gcc libffi-devel-gcc5 make \
    python-devel libopenssl-devel libtool python-pip python-setuptools

## Install Ansible and Azure SDKs via pip
sudo pip install ansible[azure]

# Remove conflicting Python cryptography package
sudo pip uninstall -y cryptography

Passare ora a Creare le credenziali di Azure.Now move on to Create Azure credentials.

Creare credenziali di AzureCreate Azure credentials

Ansible comunica con Azure usando un nome utente e password o un'entità servizio.Ansible communicates with Azure using a username and password or a service principal. Un'entità servizio di Azure è un'identità di sicurezza che è possibile usare con le app, con i servizi e con strumenti di automazione come Ansible.An Azure service principal is a security identity that you can use with apps, services, and automation tools like Ansible. Le autorizzazioni per le operazioni che l'entità servizio può eseguire in Azure vengono controllate e definite dall'utente.You control and define the permissions as to what operations the service principal can perform in Azure. Per migliorare la sicurezza rispetto alla semplice immissione di nome utente e password, questo esempio crea un'entità servizio di base.To improve security over just providing a username and password, this example creates a basic service principal.

Nel computer host o in Azure Cloud Shell creare un'entità servizio usando az ad sp create-for-rbac.On your host computer or in the Azure Cloud Shell, create a service principal using az ad sp create-for-rbac. Le credenziali necessarie per Ansible vengono visualizzate sullo schermo:The credentials that Ansible needs are output to the screen:

az ad sp create-for-rbac --query '{"client_id": appId, "secret": password, "tenant": tenant}'

Ecco un esempio di output dei comandi precedenti:An example of the output from the preceding commands is as follows:

{
  "client_id": "eec5624a-90f8-4386-8a87-02730b5410d5",
  "secret": "531dcffa-3aff-4488-99bb-4816c395ea3f",
  "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db47"
}

Per eseguire l'autenticazione in Azure, è anche necessario ottenere l'ID della sottoscrizione di Azure con az account show:To authenticate to Azure, you also need to obtain your Azure subscription ID using az account show:

az account show --query "{ subscription_id: id }"

L'output di questi due comandi verrà usato nel passaggio successivo.You use the output from these two commands in the next step.

Creare un file di credenziali di AnsibleCreate Ansible credentials file

Per specificare le credenziali per Ansible, definire le variabili di ambiente o creare un file di credenziali locali.To provide credentials to Ansible, you define environment variables or create a local credentials file. Per altre informazioni su come definire le credenziali di Ansible, vedere Providing Credentials to Azure Modules (Fornire le credenziali ai moduli di Azure).For more information about how to define Ansible credentials, see Providing Credentials to Azure Modules.

Per un ambiente di sviluppo, creare un file di credenziali per Ansible sulla macchina virtuale host.For a development environment, create a credentials file for Ansible on your host VM. Creare un file di credenziali nella macchina virtuale in cui si è installato Ansible in un passaggio precedente:Create a credentials file on the VM where you installed Ansible in a previous step:

mkdir ~/.azure
vi ~/.azure/credentials

Il file delle credenziali combina l'ID della sottoscrizione con l'output ottenuto dalla creazione di un'entità servizio.The credentials file itself combines the subscription ID with the output of creating a service principal. L'output del comando az ad sp create-for-rbac precedente è lo stesso necessario per client_id, secret e tenant.Output from the previous az ad sp create-for-rbac command is the same as needed for client_id, secret, and tenant. Il file delle credenziali seguente mostra questi valori che corrispodono a quelli dell'output precedente.The following example credentials file shows these values matching the previous output. Immettere valori personalizzati come di seguito:Enter your own values as follows:

[default]
subscription_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client_id=eec5624a-90f8-4386-8a87-02730b5410d5
secret=531dcffa-3aff-4488-99bb-4816c395ea3f
tenant=72f988bf-86f1-41af-91ab-2d7cd011db47

Salvare e chiudere il file.Save and close the file.

Usare le variabili di ambiente di AnsibleUse Ansible environment variables

Se si intende usare strumenti quali Ansible Tower o Jenkins, è necessario definire le variabili di ambiente.If you are going to use tools such as Ansible Tower or Jenkins, you need to define environment variables. Questo passaggio può essere ignorato se si intende usare solo il client Ansible e il file di credenziali di Azure creato nel passaggio precedente.This step can be skipped if you are just going to use the Ansible client and the Azure credentials file created in the previous step. Le variabili di ambiente definiscono le stesse informazioni del file di credenziali di Azure:Environment variables define the same information as the Azure credentials file:

export AZURE_SUBSCRIPTION_ID=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export AZURE_CLIENT_ID=eec5624a-90f8-4386-8a87-02730b5410d5
export AZURE_SECRET=531dcffa-3aff-4488-99bb-4816c395ea3f
export AZURE_TENANT=72f988bf-86f1-41af-91ab-2d7cd011db47

Passaggi successiviNext steps

A questo punto Ansible e i moduli necessari di Azure Python SDK sono stati installati e sono state definite le credenziali che Ansible dovrà usare.You now have Ansible and the required Azure Python SDK modules installed, and credentials defined for Ansible to use. Informazioni su come creare una macchina virtuale con Ansible.Learn how to create a VM with Ansible. È anche possibile capire come creare una macchina virtuale di Azure completa e le risorse di supporto con Ansible.You can also learn how to create a complete Azure VM and supporting resources with Ansible.