Guia de Início Rápido: Criar uma entidade de serviço do Azure para o Ansible

Neste guia de início rápido, você criará uma entidade de serviço do Azure com a CLI do Azure ou o Azure PowerShell e se autenticará no Azure por meio do Ansible.

Neste artigo, você aprenderá como:

  • 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 de chave da entidade de serviço
  • Definir variáveis de ambiente para que o Ansible possa recuperar os valores da entidade de serviço
  • Teste a entidade de serviço

Pré-requisitos

  • Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

Criar uma entidade de serviço do Azure

Uma entidade de serviço do Azure fornece a você uma conta dedicada para gerenciar os 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>

Observação

Armazene a senha da saída em uma localização segura.

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 Colaborador à entidade de serviço:

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

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

Observação

Para aprimorar 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 se autenticar no Azure com uma entidade de serviço, você precisa das seguintes informações:

  • SubscriptionID
  • ID do aplicativo da entidade de serviço
  • Senha 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-se no Azure com uma entidade de serviço

Execute os seguintes comandos para preencher as variáveis de ambiente necessárias no servidor do 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 conta da entidade de serviço.

Testar as permissões da entidade de serviço

Execute o seguinte comando para criar um 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 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óximas etapas