Ansible Tower можно интегрировать с Cloud Assembly для управления конфигурацией развернутых ресурсов. После настройки интеграции виртуальные компоненты Ansible Tower можно добавлять в новые или существующие развертывания в редакторе облачных шаблонов.

Необходимые условия

  • Предоставьте пользователям, не являющимся администраторами, соответствующие разрешения на доступ к Ansible Tower. Существует два варианта, которые можно использовать в большинстве конфигураций. Выберите наиболее подходящий для своей конфигурации.
    • Предоставьте пользователям роли «Администратор иерархии» и «Администратор шаблонов заданий» на уровне организации.
    • Предоставьте пользователям права администратора на определенную иерархию и роль «Выполнение» для всех шаблонов заданий, используемых для предоставления ресурсов.
  • Для использования с развертываниями в Ansible Tower необходимо настроить соответствующие учетные данные и шаблоны. Можно использовать шаблоны заданий или рабочих процессов. Шаблоны заданий определяют иерархию и сценарий, используемые для развертывания. Задания и сценарии сопоставляются один к одному. Для определения задач, связанных с шаблоном, в сценариях используется синтаксис, похожий на YAML. В большинстве типовых развертываний для проверки подлинности используйте учетные данные компьютера.

    Шаблоны рабочих процессов позволяют пользователям создавать последовательности, состоящие из любой комбинации шаблонов заданий, результатов синхронизации проекта и синхронизации иерархии, которые связаны друг с другом, что позволяет выполнять их единым блоком. Благодаря средству Ansible Tower Workflow Visualizer пользователи могут проектировать шаблоны рабочих процессов. В большинстве типовых развертываний для проверки подлинности можно использовать учетные данные компьютера.

    1. Войдите в Ansible Tower и перейдите в раздел «Шаблоны».
    2. Выберите «Добавить новый шаблон задания».
      • Выберите созданные вами учетные данные. Это учетные данные компьютера, для управления которыми будет использоваться Ansible Tower. Для каждого шаблона задания может существовать один объект учетных данных.
      • Для выбора ограничения выберите «Запрос при запуске». Это гарантирует, что шаблон задания будет выполняться для узла, процесс подготовки или отмены подготовки которого выполняется из Cloud Assembly. Если этот параметр не выбран, то при развертывании схемы элементов, содержащей шаблон задания, будет выводиться сообщение об ошибке «Ограничение не установлено».
    3. Выберите «Добавить новый шаблон рабочего процесса».
      • Выберите созданные ранее учетные данные, а затем определите иерархию. С помощью Workflow Visualizer спроектируйте шаблон рабочего процесса.

      В поле «Ограничение» для шаблонов рабочих процессов или заданий обычно можно выбрать вариант «Запрос при запуске». В этом случае шаблон рабочих процессов или заданий будет выполняться для узла, процесс подготовки или отмены подготовки которого выполняется в Cloud Assembly.

  • Выполнение шаблонов заданий или шаблонов рабочих процессов, вызываемых из Cloud Assembly, можно просматривать на вкладке «Задания Ansible Tower».

Процедура

  1. Выберите пункт Инфраструктура > Подключения > Интеграции и нажмите Добавить интеграцию.
  2. Нажмите Ansible Tower.
    Отобразится страница настройки Ansible.
  3. Введите имя узла, которое может быть IP-адресом, и другую необходимую информацию для экземпляра Ansible Tower.
  4. Введите имя пользователя и пароль, применяемые для проверки подлинности с помощью пользовательского интерфейса, для соответствующего экземпляра Ansible Tower.
  5. Нажмите Проверить, чтобы проверить интеграцию.
  6. Введите соответствующее имя и описание для интеграции.
  7. Нажмите кнопку Добавить.

Результаты

Приложение Ansible Tower доступно для использования в облачных шаблонах.

Дальнейшие действия

Добавьте компоненты Ansible Tower в нужные облачные шаблоны. Для пользователя, указанного в учетной записи интеграции, необходимо определить применимый шаблон задания с разрешением на выполнение.

  1. На странице холста облачного шаблона выберите Ansible в разделе «Управление конфигурацией» в меню параметров схемы элементов и перетащите компонент Ansible Tower на холст.
  2. На панели справа можно настроить соответствующие свойства Ansible Tower, например шаблоны заданий.

При добавлении плитки Ansible Tower в облачный шаблон vRealize Automation создает запись об узле для подключенной виртуальной машины в Ansible Tower. По умолчанию vRealize Automation будет использовать имя ресурса виртуальной машины для создания записи об узле, но с помощью свойства hostName в коде YAML схемы элементов можно указать любое имя. Для обеспечения связи с компьютером служба vRealize Automation создаст переменную узла ansible_host: IP Address для записи об узле. Поведение по умолчанию можно переопределить и настроить вариант связи с использованием полного доменного имени, указав ключевое слово ansible_host в разделе hostVariables и введя полное доменное имя в качестве его значения. В следующем фрагменте кода YAML приведен пример настройки связи с использованием имени узла и полного доменного имени.

Cloud_Ansible_Tower_1:
	type: Cloud Ansible Tower
	properties:
		host: name of host
		account: name of account
		hostName: resource name
		hostVariables:
			ansible_host:Host FQDN
			

В этом примере выполняется переопределение значения ansible_host по умолчанию путем указания полного доменного имени. Это может быть полезно для пользователей, которые хотят, чтобы служба Ansible Tower подключалась к компьютеру узла с помощью полного доменного имени.

Значением по умолчанию для параметра hostVariables в коде YAML будет ansible_host:IP_address, а IP-адрес используется для связи с сервером.

Если свойство count в YAML для Ansible Tower имеет значение больше 1, имя узла можно сопоставить с любым из соответствующих свойств виртуальной машины. В следующем примере показано сопоставление для ресурса виртуальной машины с именем Ubuntu-VM, если нужно сопоставить ее свойство address с именем узла.

 hostname: '${resource.Ubuntu-VM.address[count.index]}' 

При добавлении компонента Ansible Tower в облачный шаблон в коде YAML этого шаблона можно указать шаблон задания, который будет вызываться. Также можно указать шаблоны рабочих процессов или комбинацию шаблонов заданий и шаблонов рабочих процессов. Если тип шаблона не указан, vRealize Automation по умолчанию предполагает, что вы вызываете шаблон задания.

В следующем фрагменте кода YAML приведен пример вызова комбинации шаблонов задания и рабочего процесса в облачном шаблоне Ansible Tower.

Cloud_Ansible_1:
type: Cloud.Ansible.Tower
  properties:
    host: ‘${resource.CentOS_Machine.*}’
    account:
    maxConnectionRetries: 2
    maxJobRetries: 2
    templates:
      provision:
        - name: My workflow
          type: workflow
        - name: My job template      

Для обработки ошибок, связанных с Ansible, мы добавили параметры maxConnectionsRetries и maxJobRetries. Облачный шаблон принимает настраиваемое значение. Если значение не указано, шаблон будет использовать значение по умолчанию. Значение по умолчанию для maxConnectionRetries — 10, а значение по умолчанию для maxJobRetries — 3.

Примечание: Предыдущие версии службы vRealize Automation поддерживали выполнение шаблонов заданий только с помощью схемы jobTemplate в облачном шаблоне. Теперь схема jobTemplate признана устаревшей и, возможно, будет удалена в будущих выпусках. В текущем выпуске свойство jobTemplate работает как раньше. Для запуска шаблонов рабочих процессов и использования дополнительных функций рекомендуется применять схему шаблонов.

Облачные шаблоны Cloud Assembly для интеграций Ansible Tower содержат свойство useDefaultLimit со значением «истина» или «ложь», которое позволяет определить, где выполняются шаблоны Ansible. Шаблоны Ansible могут быть шаблонами заданий или шаблонами рабочих процессов. Если задано значение «истина», указанные шаблоны будут запускаться для компьютера, указанного в поле «Ограничение» на странице «Шаблоны Ansible». Если задано значение «ложь», шаблоны запускаются для подготовленного компьютера, но пользователи должны установить флажок «Запрос при запуске» на странице «Шаблоны Ansible Tower». По умолчанию это свойство имеет значение «ложь». В следующем примере кода YAML показано, как свойство useDefaultLimit отображается в облачных шаблонах.

templates:
  provision:
    - name: ping aws_credentials
      type: job
      useDefaultLimit: false
      extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'

Кроме того, как показано в примере выше, свойство extraVars можно использовать для указания дополнительных переменных или переменных опроса. Такая возможность может быть полезна для запуска шаблонов, для которых требуется ввод данных. Если пользователь использует переменную опроса, то во избежание ошибок эта переменная должна передаваться в разделе extraVars облачного шаблона.