Базовый сценарий#
Базовый сценарий позволяет ознакомиться с основами использования утилиты CLI awx
для управления Automation Controller.
Описание сценария#
Этот сценарий содержит следующие действия:
Настройка окружения для получения доступа к Automation Controller с помощью утилиты
awx
.Создание организации, с которой связываются все создаваемые далее ресурсы.
Создание инвентаря и добавление в него двух управляемых узлов.
Создание полномочий следующих типов:
Машина (Machine) для доступа к управляемым узлам;
Система управления версиями (Source Control) для доступа к Git-репозиторию с кодом проекта.
Создание проекта.
Код проекта загружается из репозитория ПАО Группа Астра, доступного по адресу https://source.astragroup.ru/aa-gca/AA/aac-samples.
Создание шаблона задания, использующего наборов сценариев
playbooks/demo_helloworld.yml
.Запуск задания на основе шаблона и вывод результатов его выполнения.
Подготовка к работе#
Для подготовки окружения к работе выполните следующие действия:
Настройте управляемые узлы согласно инструкции.
На сайте https://source.astragroup.ru/ настройте доступ к сервису Git по SSH:
Авторизуйтесь, используя свою учетную запись.
В правом верхнем углу нажмите на кнопку с аватаром и в открывшемся меню выберите Edit profile.
На панели навигации выберите SSH Keys.
Заполните форму добавления ключа SSH:
Key – содержимое публичного ключа SSH, используемого для доступа к репозиторию.
Title – необязательное название ключа.
Expiration date – срок действия ключа. Если это поле не заполнено, ключ действует неограниченно долго.
Нажмите кнопку Add key.
На вашей рабочей станции установите пакет
automation-controller-cli
согласно инструкции.
Авторизация#
Чтобы управлять Automation Controller с помощью утилиты awx
, выполните следующие действия:
Импортируйте в переменные окружения необходимые сведения о контроллере:
export CONTROLLER_HOST=https://<address> export CONTROLLER_USERNAME=<username> export CONTROLLER_PASSWORD=<password>
Здесь:
<address> – IP-адрес или FQDN контроллера;
<username> – название учетной записи администратора;
<password> – пароль администратора контроллера.
Сгенерируйте персональный токен доступа:
awx login
Эта команда возвращает токен в формате JSON, например:
Сохраните значение поля
token
в надежном месте – в случае утраты его нужно будет сгенерировать заново. Восстановить существующий токен невозможно.Экспортируйте токен в переменную окружения
CONTROLLER_OAUTH_TOKEN
:export CONTROLLER_OAUTH_TOKEN=<token>
Создание организации#
Создайте организацию Jupiter:
awx organizations create --name 'Jupiter'
Для получения идентификатора организации выполните команду:
awx organizations list --all -f human
Она возвращает таблицу следующего вида:
Описание инвентаря#
Подготовьте описание инвентаря с помощью следующих действий:
Создайте инвентарь Jupiter Inventory, принадлежащий организации Jupiter (ID=2):
awx inventory create \ --name 'Jupiter Inventory' \ --organization 2
Для получения идентификатора созданного инвентаря выполните команду:
awx inventory list --all -f human
Она возвращает таблицу следующего вида:
Добавьте в Jupiter Inventory (ID=2) два управляемых узла:
awx host create \ --name '<node_name>' \ --inventory 2 \ --variables '<node_variables>'
Здесь:
<node_name> – название управляемого узла, например,
node01
;<node_variables> –переменные управляемого узла в формате JSON или YAML, например:
{ "ansible_host": "192.168.56.101" }
Создание полномочий#
Для доступа к управляемым узлам и Git-репозиторию с кодом проекта необходимы полномочия. Создайте их с помощью команды awx credentials create. Данные укажите в формате JSON, используя следующие поля:
username
– название учетной записи.password
– пароль.ssh_key_data
– содержимое файла с приватным ключом SSH или путь к нему.При указании содержимого файла замените переходы на новую строку последовательностью
\n
, например:{ "username": "astra", "ssh_key_data": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3******FBg==\n-----END OPENSSH PRIVATE KEY-----" }
При указании пути к файлу добавьте в начало строки символ
@
:{ "username": "astra", "ssh_key_data": "@~/.ssh/private-key" }
Примечание
По умолчанию поиск выполняется относительно текущего каталога.
ssh_key_unlock
– если приватный ключ SSH защищен паролем, укажите его в этом поле.
{
"username": "administrator",
"ssh_key_data": "@~/.ssh/private-key",
"ssh_key_unlock": "p@ssW0rD"
}
Создайте полномочие Demo machine credential типа Машина (Machine), принадлежащее организации Jupiter (ID=2):
awx credentials create \ --name 'Demo machine credential' \ --credential_type 'Machine' \ --organization 2 \ --inputs '<node_data>'
Здесь <node_inputs> – учетные данные в формате JSON или YAML для доступа к управляемому узлу.
Создайте полномочие Demo sources credential типа Система управления версиями (Source Control), принадлежащее организации Jupiter (ID=2):
awx credentials create \ --name 'Demo sources credential' \ --credential_type 'Source Control' \ --organization 2 \ --inputs '<git_data>'
Здесь <git_data> – учетные данные в формате JSON или YAML для доступа к Git-репозиторию с кодом демонстрационного проекта.
Для получения идентификаторов созданных полномочий выполните команду:
awx credentials list --all -f human
Она возвращает таблицу следующего вида:
id name == ======================= 2 Ansible Galaxy 1 Demo Credential 3 Demo machine credential 4 Demo sources credential
Подготовка проекта#
Создайте проект AWX CLI demo project:
awx projects create \ --wait \ --organization 2 \ --name='AWX CLI demo project' \ --scm_type git \ --scm_url ssh://git@source.astragroup.ru:2222/aa-gca/AA/aac-samples.git \ --credential 4
Эта команда создает проект, используя следующие ресурсы:
Тип ресурса
Идентификатор
Название
Организация
2
Jupiter
Полномочие
4
Demo sources credential
Для получения идентификатора созданного проекта выполните команду:
awx projects list --all -f human
Она возвращает таблицу следующего вида:
id name == ==================== 6 Demo Project 8 AWX CLI demo project
Подготовка задания#
Для подготовки задания выполните следующие действия:
Создайте шаблон задания AWX CLI demo job template:
awx job_templates create \ --name 'AWX CLI demo job template' \ --project 8 \ --playbook playbooks/demo_helloworld.yml \ --inventory 2
Эта команда создает шаблон задания, используя следующие ресурсы:
Тип ресурса
Идентификатор
Название
Проект
8
AWX CLI demo project
Инвентарь
2
Jupiter Inventory
Для получения идентификатора шаблона задания выполните команду:
awx job_templates list --all -f human
Она возвращает таблицу следующего вида:
id name == ==== 10 AWX CLI demo job template 7 Demo Job Template
Запуск задания и проверка его статуса#
Для запуска задания на основе шаблона AWX CLI demo job template выполните команду:
awx job_templates launch \
--credentials 3 \
--monitor \
10
Эта команда запускает задание, используя следующие ресурсы:
Тип ресурса |
Идентификатор |
Название |
---|---|---|
Шаблон задания |
10 |
AWX CLI demo job template |
Полномочия |
3 |
Demo machine credential |
Результаты выполнения задания выводятся в терминал (часть вывода опущена с целью сокращения):
Если в поле failed
указано значение 0
, значит задание завершилось успешно.