azure_rm_deployment — Создание или удаление развертываний шаблонов Azure Resource Manager
Новая версия с 2.1.
Обзор
- Создайте или удалите развертывания шаблонов Azure Resource Manager с помощью Azure SDK для Python. Некоторые шаблоны быстрой настройки можно найти на GitHub https://github.com/azure/azure-quickstart-templates. Дополнительную информацию о шаблонах ресурсов Azue см. в https://azure.microsoft.com/ru-ru/documentation/articles/resource-group-template-deploy/.
Требования
Ниже перечислены требования к хосту, на котором выполняется данный модуль.
- python >= 2.7
- azure >= 2.0.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ad_user | Имя пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory вместо служебного принципала. | |
| adfs_authority_url (добавлено в 2.6) | Значение по умолчанию: null | URL-адрес авторизации Azure AD. Используйте при аутентификации с именем пользователя/паролем и собственной службой ADFS. |
| api_profile (добавлено в 2.5) | Значение по умолчанию: "latest" | Выбирает профиль API для взаимодействия с Azure-сервисами. Значение по умолчанию latest подходит для публичных облаков; будущие значения позволят использовать с Azure Stack. |
| append_tags bool |
| Контролирует, будет ли поле тегов каноническим или просто добавляться к существующим тегам. При каноническом режиме любые теги, отсутствующие в параметре тегов, будут удалены из метаданных объекта. |
| auth_source (добавлено в 2.5) |
| Контролирует источник учетных данных для аутентификации. Если не указано, используется переменная среды ANSIBLE_AZURE_AUTH_SOURCE и по умолчанию auto если переменная не определена.auto будет следовать приоритету параметров модуля -> переменных среды -> профилю по умолчанию в файле учетных данных ~/.azure/credentials. При установке в cli, учетные данные берутся из профиля Azure CLI по умолчанию.Также может быть установлено через переменную среды ANSIBLE_AZURE_AUTH_SOURCE.Если установлено в msi, хост-машина должна быть ресурсом Azure с включенным расширением MSI. subscription_id или переменная среды AZURE_SUBSCRIPTION_ID могут быть использованы для определения идентификатора подписки, если ресурс имеет доступ к нескольким подпискам, в противном случае выбирается первая подписка.msi была добавлена в Ansible 2.6. |
| cert_validation_mode (добавлено в 2.5) |
| Контролирует поведение проверки сертификата для Azure-точек входа. По умолчанию все модули проверяют сертификат сервера, но при использовании прокси-сервера HTTPS или Azure Stack может потребоваться отключить это поведение, передав ignore. Также может быть установлено через профиль файла учетных данных или переменную среды AZURE_CERT_VALIDATION. |
| client_id | Идентификатор клиента Azure. Используйте при аутентификации с помощью служебного принципала. | |
| cloud_environment (добавлено в 2.4) | Значение по умолчанию: "AzureCloud" | Для облачных сред, отличных от публичного облака США, используется имя среды (определенное Azure Python SDK, например, AzureChinaCloud, AzureUSGovernment) или URL-адрес конечной точки обнаружения метаданных (требуется для Azure Stack). Также может быть установлено через профиль файла учетных данных или переменную среды AZURE_CLOUD_ENVIRONMENT. |
| deployment_mode |
| В режиме incremental ресурсы развертываются без удаления существующих ресурсов, которые не включены в шаблон. В режиме complete ресурсы развертываются, а существующие ресурсы в группе ресурсов, не включенные в шаблон, удаляются. |
| deployment_name | Значение по умолчанию: "ansible-arm" | Имя развертывания, отслеживаемое в журнале развертываний группы ресурсов. Использование имени развертывания перезапишет предыдущее значение в журнале развертываний группы ресурсов. |
| location | Значение по умолчанию: "westus" | Географическое расположение, в котором будет расположена группа ресурсов. |
| parameters dict | Хеш всех необходимых переменных шаблона для шаблона развертывания. Этот параметр взаимоисключающий с 'parameters_link'. Один из них обязателен, если параметр "state" равен "present". | |
| parameters_link | URI файла, содержащего тело параметров. Этот параметр взаимоисключающий с 'parameters'. Один из них обязателен, если параметр "state" равен "present". | |
| password | Пароль пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory вместо служебного принципала. | |
| profile | Профиль безопасности, найденный в файле ~/.azure/credentials. | |
| resource_group_name обязательно | Имя группы ресурсов для использования или создания для размещения развернутого шаблона псевдонимы: resource_group | |
| secret | Секрет клиента Azure. Используйте при аутентификации с помощью служебного принципала. | |
| state |
| Если state равен "present", шаблон будет создан. Если state равен "present" и развертывание существует, оно будет обновлено. Если state равен "absent", стек будет удален. |
| subscription_id | Ваш идентификатор подписки Azure. | |
| tags | Словарь пар строка:строка для назначения метаданных объекту. Метаданные тегов объекта будут обновлены любыми предоставленными значениями. Для удаления тегов установите параметр append_tags в false. | |
| template dict | Хеш, содержащий встроенные шаблоны. Этот параметр взаимоисключающий с 'template_link'. Один из них обязателен, если параметр "state" равен "present". | |
| template_link | URI файла, содержащего тело шаблона. Этот параметр взаимоисключающий с 'template'. Один из них обязателен, если параметр "state" равен "present". | |
| tenant | Идентификатор клиента Azure. Используйте при аутентификации с помощью служебного принципала. | |
| wait_for_deployment_completion bool |
| Блокировать ли выполнение, пока развертывание не завершится. |
| wait_for_deployment_polling_period | Значение по умолчанию: 10 | Время (в секундах) ожидания между опросами при ожидании завершения развертывания. |
Примечания
Примечание
- Для аутентификации с Azure можно передать параметры, установить переменные среды или использовать профиль, сохраненный в ~/.azure/credentials. Аутентификация возможна с использованием служебного принципала или пользователя Active Directory. Для аутентификации через служебного принципала передайте subscription_id, client_id, secret и tenant или установите переменные среды AZURE_SUBSCRIPTION_ID, AZURE_CLIENT_ID, AZURE_SECRET и AZURE_TENANT.
- Для аутентификации через пользователя Active Directory передайте ad_user и password или установите AZURE_AD_USER и AZURE_PASSWORD в среде.
- В качестве альтернативы учетные данные могут быть сохранены в ~/.azure/credentials. Это файл ini, содержащий раздел [default] и следующие ключи: subscription_id, client_id, secret и tenant или subscription_id, ad_user и password. Также можно добавить дополнительные профили. Укажите профиль, передав profile или установив AZURE_PROFILE в среде.
Примеры
# Destroy a template deployment
- name: Destroy Azure Deploy
azure_rm_deployment:
state: absent
subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
resource_group_name: dev-ops-cle
# Create or update a template deployment based on uris using parameter and template links
- name: Create Azure Deploy
azure_rm_deployment:
state: present
resource_group_name: dev-ops-cle
template_link: 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.json'
parameters_link: 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.parameters.json'
# Create or update a template deployment based on a uri to the template and parameters specified inline.
# This deploys a VM with SSH support for a given public key, then stores the result in 'azure_vms'. The result is then
# used to create a new host group. This host group is then used to wait for each instance to respond to the public IP SSH.
---
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Destroy Azure Deploy
azure_rm_deployment:
state: absent
subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
resource_group_name: dev-ops-cle
- name: Create Azure Deploy
azure_rm_deployment:
state: present
subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
resource_group_name: dev-ops-cle
parameters:
newStorageAccountName:
value: devopsclestorage1
adminUsername:
value: devopscle
dnsNameForPublicIP:
value: devopscleazure
location:
value: West US
vmSize:
value: Standard_A2
vmName:
value: ansibleSshVm
sshKeyData:
value: YOUR_SSH_PUBLIC_KEY
template_link: 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-sshkey/azuredeploy.json'
register: azure
- name: Add new instance to host group
add_host:
hostname: "{{ item['ips'][0].public_ip }}"
groupname: azure_vms
with_items: "{{ azure.deployment.instances }}"
- hosts: azure_vms
user: devopscle
tasks:
- name: Wait for SSH to come up
wait_for:
port: 22
timeout: 2000
state: started
- name: echo the hostname of the vm
shell: hostname
# Deploy an Azure WebApp running a hello world'ish node app
- name: Create Azure WebApp Deployment at http://devopscleweb.azurewebsites.net/hello.js
azure_rm_deployment:
state: present
subscription_id: cbbdaed0-fea9-4693-bf0c-d446ac93c030
resource_group_name: dev-ops-cle-webapp
parameters:
repoURL:
value: 'https://github.com/devigned/az-roadshow-oss.git'
siteName:
value: devopscleweb
hostingPlanName:
value: someplan
siteLocation:
value: westus
sku:
value: Standard
template_link: 'https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-web-app-github-deploy/azuredeploy.json'
# Create or update a template deployment based on an inline template and parameters
- name: Create Azure Deploy
azure_rm_deployment:
state: present
subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
resource_group_name: dev-ops-cle
template:
$schema: "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#"
contentVersion: "1.0.0.0"
parameters:
newStorageAccountName:
type: "string"
metadata:
description: "Unique DNS Name for the Storage Account where the Virtual Machine's disks will be placed."
adminUsername:
type: "string"
metadata:
description: "User name for the Virtual Machine."
adminPassword:
type: "securestring"
metadata:
description: "Password for the Virtual Machine."
dnsNameForPublicIP:
type: "string"
metadata:
description: "Unique DNS Name for the Public IP used to access the Virtual Machine."
ubuntuOSVersion:
type: "string"
defaultValue: "14.04.2-LTS"
allowedValues:
- "12.04.5-LTS"
- "14.04.2-LTS"
- "15.04"
metadata:
description: >
The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version.
Allowed values: 12.04.5-LTS, 14.04.2-LTS, 15.04."
variables:
location: "West US"
imagePublisher: "Canonical"
imageOffer: "UbuntuServer"
OSDiskName: "osdiskforlinuxsimple"
nicName: "myVMNic"
addressPrefix: "192.0.2.0/24"
subnetName: "Subnet"
subnetPrefix: "10.0.0.0/24"
storageAccountType: "Standard_LRS"
publicIPAddressName: "myPublicIP"
publicIPAddressType: "Dynamic"
vmStorageAccountContainerName: "vhds"
vmName: "MyUbuntuVM"
vmSize: "Standard_D1"
virtualNetworkName: "MyVNET"
vnetID: "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]"
subnetRef: "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]"
resources:
- type: "Microsoft.Storage/storageAccounts"
name: "[parameters('newStorageAccountName')]"
apiVersion: "2015-05-01-preview"
location: "[variables('location')]"
properties:
accountType: "[variables('storageAccountType')]"
- apiVersion: "2015-05-01-preview"
type: "Microsoft.Network/publicIPAddresses"
name: "[variables('publicIPAddressName')]"
location: "[variables('location')]"
properties:
publicIPAllocationMethod: "[variables('publicIPAddressType')]"
dnsSettings:
domainNameLabel: "[parameters('dnsNameForPublicIP')]"
- type: "Microsoft.Network/virtualNetworks"
apiVersion: "2015-05-01-preview"
name: "[variables('virtualNetworkName')]"
location: "[variables('location')]"
properties:
addressSpace:
addressPrefixes:
- "[variables('addressPrefix')]"
subnets:
-
name: "[variables('subnetName')]"
properties:
addressPrefix: "[variables('subnetPrefix')]"
- type: "Microsoft.Network/networkInterfaces"
apiVersion: "2015-05-01-preview"
name: "[variables('nicName')]"
location: "[variables('location')]"
dependsOn:
- "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
- "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]"
properties:
ipConfigurations:
-
name: "ipconfig1"
properties:
privateIPAllocationMethod: "Dynamic"
publicIPAddress:
id: "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]"
subnet:
id: "[variables('subnetRef')]"
- type: "Microsoft.Compute/virtualMachines"
apiVersion: "2015-06-15"
name: "[variables('vmName')]"
location: "[variables('location')]"
dependsOn:
- "[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]"
- "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
properties:
hardwareProfile:
vmSize: "[variables('vmSize')]"
osProfile:
computername: "[variables('vmName')]"
adminUsername: "[parameters('adminUsername')]"
adminPassword: "[parameters('adminPassword')]"
storageProfile:
imageReference:
publisher: "[variables('imagePublisher')]"
offer: "[variables('imageOffer')]"
sku: "[parameters('ubuntuOSVersion')]"
version: "latest"
osDisk:
name: "osdisk"
vhd:
uri: >
[concat('http://',parameters('newStorageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',
variables('OSDiskName'),'.vhd')]
caching: "ReadWrite"
createOption: "FromImage"
networkProfile:
networkInterfaces:
-
id: "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
diagnosticsProfile:
bootDiagnostics:
enabled: "true"
storageUri: "[concat('http://',parameters('newStorageAccountName'),'.blob.core.windows.net')]"
parameters:
newStorageAccountName:
value: devopsclestorage
adminUsername:
value: devopscle
adminPassword:
value: Password1!
dnsNameForPublicIP:
value: devopscleazure
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| deployment словарь | всегда | Подробности развертывания Пример: {'group_name': {'description': 'Имя группы ресурсов', 'type': 'строка', 'returned': 'всегда'}, 'id': {'description': 'Azure ID развертывания', 'type': 'строка', 'returned': 'всегда'}, 'instances': {'description': 'Предоставляет общедоступные IP-адреса для каждого экземпляра виртуальной машины.', 'type': 'список', 'returned': 'всегда'}, 'name': {'description': 'Имя развертывания', 'type': 'строка', 'returned': 'всегда'}, 'outputs': {'description': 'Словарь выводов, полученных из развертывания', 'type': 'словарь', 'returned': 'всегда'}} |
Статус
Этот модуль помечен как предварительный, что означает, что он не гарантирует обратной совместимости интерфейса.
Техническое обслуживание
Этот модуль помечен как сертифицированный, что означает, что он поддерживается партнером Ansible. Дополнительная информация доступна в разделе Техническое обслуживание и поддержка модулей.
Список других модулей, поддерживаемых партнером Ansible, см. здесь.
Автор
- David Justice (@devigned)
- Laurent Mazuel (@lmazuel)
- Andre Price (@obsoleted)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/azure_rm_deployment_module.html