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

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 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.

Installare AnsibleInstall Ansible

Creare prima un gruppo di risorse con az group create.First, create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroupAnsible nella posizione eastus:The following example creates a resource group named myResourceGroupAnsible in the eastus location:

az group create --name myResourceGroupAnsible --location eastus

A questo punto, creare una macchina virtuale e installare Ansible per una delle distribuzioni seguenti:Now create a VM and install Ansible for one of the following distros:

Ubuntu 16.04 LTSUbuntu 16.04 LTS

Creare una macchina virtuale con il comando az vm create.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 myResourceGroupAnsible \
    --image UbuntuLTS \
    --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
pip install ansible[azure]

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

CentOS 7.3CentOS 7.3

Creare una macchina virtuale con il comando az vm create.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 myResourceGroupAnsible \
    --image CentOS \
    --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.

SLES 12 SP2SLES 12 SP2

Creare una VM con il comando az vm create.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 myResourceGroupAnsible \
    --image SLES \
    --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 python-devel \
    libopenssl-devel libtool python-pip python-setuptools

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

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 indicare un 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.

Creare un'entità servizio con az ad sp create-for-rbac e generare l'output delle credenziali necessarie per Ansible:Create a service principal with az ad sp create-for-rbac and output the credentials that Ansible needs:

az ad sp create-for-rbac --query [appId,password,tenant]

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

[
  "eec5624a-90f8-4386-8a87-02730b5410d5",
  "531dcffa-3aff-4488-99bb-4816c395ea3f",
  "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 with az account show:

az account show --query [id] --output tsv

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 come segue:For a development environment, create a credentials file for Ansible on your host VM as follows:

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 segue lo stesso ordine in base alle esigenze di client_id, secret e tenant.Output from the previous az ad sp create-for-rbac command is the same order 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

Usare le variabili di ambiente di AnsibleUse Ansible environment variables

Se si intende usare strumenti quali Ansible Tower o Jenkins, è possibile definire variabili di ambiente come indicato di seguito.If you are going to use tools such as Ansible Tower or Jenkins, you can define environment variables as follows. Queste variabili combinano l'ID della sottoscrizione con l'output della creazione di un'entità servizio.These variables combine the subscription ID with the output from creating a service principal. L'output del comando az ad sp create-for-rbac precedente segue lo stesso ordine in base alle esigenze di AZURE_CLIENT_ID, AZURE_SECRET e AZURE_TENANT.Output from the previous az ad sp create-for-rbac command is the same order as needed for AZURE_CLIENT_ID, AZURE_SECRET, and AZURE_TENANT.

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.