Spec-Zone.ru › Ansible 2.6

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)
    Варианты:
  • auto
  • cli
  • credential_file
  • env
  • msi
Контролирует источник учетных данных для аутентификации.
Если не указано, используется переменная среды 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)
    Варианты:
  • validate
  • ignore
Контролирует поведение проверки сертификата для 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
    Варианты:
  • complete
  • incremental ←
В режиме 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
    Варианты:
  • present ←
  • absent
Если 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API