Базовый сценарий#
В этом документе приведен базовый сценарий использования API Automation Controller. В ходе выполнения сценария производятся следующие действия:
Получение токена авторизации.
Создание организации.
Добавление полномочий Ansible Galaxy для созданной организации.
Создание инвентаря.
Добавление управляемого узла в инвентарь.
Создание проекта.
Создание шаблона задания для установки NGINX.
Запуск шаблона задания.
Проверка статуса выполнения задания.
Предварительные требования#
Перед выполнением сценария произведите следующие действия в графическом интерфейсе контроллера:
Создайте полномочия для доступа к следующим ресурсам:
управляемый узел;
Ansible Galaxy;
Private Automation Hub.
Примечание
С подробной информацией о работе с полномочиями можно ознакомиться в документе Полномочия.
Получите идентификаторы созданных полномочий:
На панели навигации выберите
( ).Нажмите на ссылку с названием нужного полномочия, например, Ansible Galaxy.
Скопируйте <credentials_id> в адресной строке браузера, которая имеет следующий вид
https://<address>/#/credentials/<credentials_id>/details
.
Подготовка организационной структуры#
Для подготовки организационной структуры выполните следующие действия:
-
curl -X POST \ https://<address>/api/v2/tokens/ \ -H 'Content-Type: application/json' \ -d '{ "description": "Token description", "application": null, "user": "<username>", "scope": "write" }' \ -u '<username>:<password>' | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<address> – FQDN или IP-адрес контроллера, например,
192.168.56.11
;<username> – название учетной записи пользователя, используемой для аутентификации в контроллере, например,
admin
;<password> – пароль, например,
awx
.
Эта команда возвращает JSON следующего вида:
Здесь
token
– значение созданного токена. Сохраните его в надежном месте, оно понадобится позже. Получите идентификатор среды исполнения в графическом интерфейсе контроллера:
На панели навигации выберите
( ).Нажмите на ссылку с названием нужной среды исполнения, например, Default execution environment.
Скопируйте <execution_environment_id> в адресной строке браузера, которая имеет следующий вид
https://<address>/#/execution_environments/<execution_environments_id>/details
.
-
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "<your_organization_name>", "default_environment": "<execution_environment_id>" }' \ https://<address>/api/v2/organizations/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<your_token> – токен, полученный на предыдущем шаге, например,
3wijiG7********VtL2gseJESzjJsD
;<your_organization_name> – название организации, например,
Jupiter
;<execution_environment_id> – идентификатор среды исполнения, например,
1
.
Organization
Добавьте полномочия Ansible Galaxy для созданной организации:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "id":<credentials_id> }' \ https://<address>/api/v2/organizations/<organization_id>/galaxy_credentials/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<credentials_id> – идентификатор полномочий для доступа к Ansible Galaxy, например,
2
;<organization_id> – идентификатор организации, созданной ранее, например,
4
.
Подготовка инвентаря#
Для подготовки инвентаря выполните следующие действия:
-
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <address>' \ -d '{ "name": "<your_inventory_name>", "organization": <organization_id> }' \ https://<address>/api/v2/inventories/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере. Здесь <your_inventory_name> – название инвентаря, например,
Demo Inventory
.Inventory
Добавьте управляемый узел в инвентарь:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "<node_ip>", "description": "<node_name>", "inventory": <inventory_id>, "enabled": true }' \ https://<address>/api/v2/hosts/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<node_ip> – IP-адрес управляемого узла например,
10.2.0.6
;<node_name> – название управляемого узла, например,
node01
;<inventory_id> – идентификатор инвентаря, например,
4
.
Host
Подготовка задания#
Для подготовки задания выполните следующие действия:
-
Примечание
В качестве источника при создании проекта используется репозиторий с примерами.
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "<your_project_name>", "scm_type": "git", "scm_url": "ssh://git@source.astragroup.ru:2222/aa-gca/AA/aac-samples.git", "scm_branch": "master", "default_environment": <environment_id>, "credential": <credential_id>, "organization": <organization_id> }' \ https://<address>/api/v2/projects/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<your_project_name> – название проекта, например,
Demo NGINX Project
;<credentials_id> – идентификатор полномочий для доступа к Private Automation Hub, например,
3
.
Project
Создайте шаблон задания для установки NGINX:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "NGINX Deployment", "job_type": "run", "inventory": <inventory_id>, "project": <project_id>, "playbook": "nginx/site.yml" }' \ https://<address>/api/v2/job_templates/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере. Здесь <project_id> – идентификатор проекта, созданного ранее, например,
14
.Job template
Добавьте полномочия для шаблона задания:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "id":<credential_id> }' \ https://<address>/api/v2/job_templates/<job_template_id>/credentials/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<credentials_id> – идентификатор полномочий для доступа к управляемому узлу, например,
1
;<job_template_id> – идентификатор созданного ранее шаблона задания, например,
15
.
Выполнение и проверка задания#
Для запуска и проверки статуса задания выполните следующие действия:
Запустите задание, используя созданный шаблон:
curl -X POST \ -H 'Authorization: Bearer <your_token>' \ https://<address>/api/v2/job_templates/<job_template_id>/launch/ | jq .
Job template
Проверьте статус выполнения задания:
curl -X GET \ https://<address>/api/v2/jobs/<id_job>/ \ -H 'Authorization: Bearer <your_token>' \ -k -s | jq .
Подставьте собственные значения параметров вместо употребленных в примере. Здесь <id_job> – идентификатор задания, запущенного ранее, например,
11
.Job
Если в поле
failed
указано значениеfalse
, значит задание завершилось успешно.