Condividi tramite


Avvio rapido: Creare un'entità servizio di Azure per Ansible

In questa guida introduttiva si crea un'entità servizio di Azure con AzureCLI o Azure PowerShell e si esegue l'autenticazione in Azure da Ansible.

In questo articolo vengono illustrate le operazioni seguenti:

  • Creare un'entità servizio di Azure usando l'interfaccia della riga di comando di Azure
  • Creare un'entità servizio di Azure usando Azure PowerShell
  • Assegnare un ruolo all'entità servizio di Azure
  • Ottenere informazioni sulla chiave dall'entità servizio
  • Impostare le variabili di ambiente in modo che Ansible possa recuperare i valori dell'entità servizio
  • Testare l'entità servizio

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Creare un'entità servizio di Azure

Un'entità servizio di Azure offre un account dedicato per gestire le risorse di Azure con Ansible.

Eseguire il codice seguente per creare un'entità servizio di Azure:

az ad sp create-for-rbac --name ansible \
            --role Contributor \
            --scopes /subscriptions/<subscription_id>

Nota

Archiviare la password dall'output in una posizione sicura.

Assegnare un ruolo all'entità servizio di Azure

Per impostazione predefinita, le entità servizio non hanno l'accesso necessario per gestire le risorse in Azure.

Eseguire il comando seguente per assegnare il ruolo Collaboratore all'entità servizio:

az role assignment create --assignee <appID> \
    --role Contributor \
    --scope /subscriptions/<subscription_id>

Sostituire <appID> con il valore fornito dall'output del az ad sp create-for-rbac comando.

Nota

Per migliorare la sicurezza, modificare l'ambito dell'assegnazione di ruolo in un gruppo di risorse anziché in una sottoscrizione.

Ottenere informazioni sull'entità servizio di Azure

Per eseguire l'autenticazione in Azure con un'entità servizio, sono necessarie le informazioni seguenti:

  • SubscriptionID
  • Id applicazione dell'entità servizio
  • Password dell'entità servizio
  • TenantID

Eseguire i comandi seguenti per ottenere le informazioni sull'entità servizio:

az account show --query '{tenantId:tenantId,subscriptionid:id}';

az ad sp list --display-name ansible --query '{clientId:[0].appId}'

Eseguire l'autenticazione in Azure con l'entità servizio

Eseguire i comandi seguenti per popolare le variabili di ambiente necessarie nel server Ansible:

export AZURE_SUBSCRIPTION_ID=<SubscriptionID>
export AZURE_CLIENT_ID=<ApplicationId>
export AZURE_SECRET=<Password>
export AZURE_TENANT=<TenantID>

Sostituire <SubscriptionID>, <ApplicationId>, <Password>e <TenantID> con i valori dell'account dell'entità servizio.

Testare le autorizzazioni dell'entità servizio

Eseguire il comando seguente per creare un nuovo gruppo di risorse di Azure:

ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> location=<resource_group_location>"

Sostituire <resource_group_name> e <resource_group_location> con i nuovi valori del gruppo di risorse.

[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
    "changed": true,
    "contains_resources": false,
    "state": {
        "id": "/subscriptions/<subscriptionID>/resourceGroups/azcli-test",
        "location": "eastus",
        "name": "azcli-test",
        "provisioning_state": "Succeeded",
        "tags": null
    }
}

Eseguire il comando seguente per eliminare il gruppo di risorse di Azure:

ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> state=absent force_delete_nonempty=yes"

Sostituire <resource_group_name> con il nome del gruppo di risorse.

[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
    "changed": true,
    "contains_resources": false,
    "state": {
        "id": "/subscriptions/subscriptionID>/resourceGroups/azcli-test",
        "location": "eastus",
        "name": "azcli-test",
        "provisioning_state": "Succeeded",
        "status": "Deleted",
        "tags": null
    }
}

Passaggi successivi