Guia de início rápido: criar uma entidade de serviço do Azure para o Ansible

Neste início rápido, você cria uma entidade de serviço do Azure com AzureCLI ou Azure PowerShell e autentica no Azure a partir do Ansible.

Neste artigo, vai aprender a:

  • Criar uma entidade de serviço do Azure usando a CLI do Azure
  • Criar uma entidade de serviço do Azure usando o Azure PowerShell
  • Atribuir uma função à entidade de serviço do Azure
  • Obter informações importantes da entidade de serviço
  • Definir variáveis de ambiente para que o Ansible possa recuperar os valores da entidade de serviço
  • Testar a entidade de serviço

Pré-requisitos

  • Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.

Criar um principal de serviço do Azure

Uma entidade de serviço do Azure oferece uma conta dedicada para gerenciar recursos do Azure com o Ansible.

Execute o seguinte código para criar uma entidade de serviço do Azure:

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

Nota

Armazene a senha da saída em um local seguro.

Atribuir uma função à entidade de serviço do Azure

Por padrão, as entidades de serviço não têm o acesso necessário para gerenciar recursos no Azure.

Execute o seguinte comando para atribuir a função de Colaborador à entidade de serviço:

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

Substitua <appID> pelo valor fornecido a partir da saída do az ad sp create-for-rba comando.

Nota

Para melhorar a segurança, altere o escopo da atribuição de função para um grupo de recursos em vez de uma assinatura.

Obter informações da entidade de serviço do Azure

Para autenticar no Azure com uma entidade de serviço, você precisa das seguintes informações:

  • SubscriptionID
  • ApplicationId da entidade de serviço
  • Palavra-passe da entidade de serviço
  • TenantID

Execute os seguintes comandos para obter as informações da entidade de serviço:

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

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

Autenticar no Azure com a entidade de serviço

Execute os seguintes comandos para preencher as variáveis de ambiente necessárias no servidor Ansible:

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

Substitua <SubscriptionID>, , <ApplicationId><Password>e <TenantID> pelos valores da sua conta principal de serviço.

Testar permissões da entidade de serviço

Execute o seguinte comando para criar um novo grupo de recursos do Azure:

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

Substitua <resource_group_name> e <resource_group_location> pelos novos valores do grupo de recursos.

[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
    }
}

Execute o seguinte comando para excluir o grupo de recursos do Azure:

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

Substitua <resource_group_name> pelo nome do seu grupo de recursos.

[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
    }
}

Próximos passos