Краткое руководство. Создание субъекта-службы Azure для Ansible
В этом кратком руководстве показано, как создать субъект-службу Azure с помощью Azure CLI или Azure PowerShell и настроите проверку подлинности в Azure из Ansible.
Вы узнаете, как выполнять следующие задачи:
- создание субъекта-службы Azure с помощью Azure CLI;
- Создание субъекта-службы Azure с помощью Azure PowerShell
- Назначение роли субъекту-службе Azure
- Получите ключевую информацию от субъекта-службы
- Установите переменные среды, чтобы Ansible мог получать значения участников службы
- Проверка субъекта-службы
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Установите Ansible: выполните одно из указанных ниже действий.
- Установите и настройте Ansible на виртуальной машине Linux.
- Настройте Azure Cloud Shell
Создание субъекта-службы Azure
Субъект-служба Azure предоставляет выделенную учетную запись для управления ресурсами Azure с помощью Ansible.
Чтобы создать субъект-службу Azure, выполните следующий код:
az ad sp create-for-rbac --name ansible \
--role Contributor \
--scopes /subscriptions/<subscription_id>
Примечание.
Сохраните в безопасном месте пароль, указанный в выходных данных.
Назначение роли субъекту-службе Azure
По умолчанию субъекты-службы не имеют доступа, который требуется для управления ресурсами в Azure.
Выполните следующую команду, чтобы назначить субъекту-службе роль Участник:
az role assignment create --assignee <appID> \
--role Contributor \
--scope /subscriptions/<subscription_id>
Замените <appID>
значением, которое вы получили в выходных данных команды az ad sp create-for-rbac
.
Примечание.
Чтобы повысить безопасность, измените область назначения роли: укажите группу ресурсов вместо подписки.
Получение сведений о субъекте-службе Azure
Чтобы выполнить проверку подлинности в Azure с помощью субъекта-службы, вам потребуется следующая информация:
- SubscriptionID
- идентификатор приложения субъекта-службы;
- пароль субъекта-службы;
- TenantID
Чтобы получить сведения о субъекте-службе, выполните следующие команды:
az account show --query '{tenantId:tenantId,subscriptionid:id}';
az ad sp list --display-name ansible --query '{clientId:[0].appId}'
Проверка подлинности в Azure с помощью субъекта-службы
Выполните следующие команды, чтобы заполнить необходимые переменные среды на сервере Ansible:
export AZURE_SUBSCRIPTION_ID=<SubscriptionID>
export AZURE_CLIENT_ID=<ApplicationId>
export AZURE_SECRET=<Password>
export AZURE_TENANT=<TenantID>
Замените <SubscriptionID>
, <ApplicationId>
, <Password>
и <TenantID>
правильными значениями для учетной записи субъекта-службы.
Проверка разрешений субъекта-службы
Выполните следующую команду, чтобы создать группу ресурсов Azure:
ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> location=<resource_group_location>"
Замените <resource_group_name>
и <resource_group_location>
правильными значениями для новой группы ресурсов.
[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
}
}
Выполните следующую команду, чтобы удалить группу ресурсов Azure:
ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> state=absent force_delete_nonempty=yes"
Замените <resource_group_name>
именем своей группы ресурсов.
[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
}
}