Базовый сценарий#
В этом документе приведен базовый сценарий использования API Automation Controller. В ходе выполнения сценария производятся следующие действия:
Получение токена авторизации.
Создание организации.
Добавление полномочий Ansible Galaxy для созданной организации.
Создание инвентаря.
Добавление управляемого узла в инвентарь.
Создание проекта.
Создание шаблона задания для установки NGINX.
Запуск шаблона задания.
Проверка статуса выполнения задания.
Предварительные требования#
Перед выполнением сценария произведите следующие действия в графическом интерфейсе контроллера:
Создайте полномочия для доступа к следующим ресурсам:
управляемый узел;
Ansible Galaxy;
источник проектов.
Примечание
Управление полномочиями объясняется в описании графического интерфейса.
Получите идентификаторы созданных полномочий:
На панели навигации выберите ().
Нажмите на ссылку с названием нужного полномочия, например, Ansible Galaxy.
Скопируйте <credentials_id> в адресной строке браузера, которая имеет следующий вид
https://<address>/#/credentials/<credentials_id>/details.
Подготовка организационной структуры#
Для подготовки организационной структуры выполните следующие действия:
Получите идентификатор среды исполнения в графическом интерфейсе контроллера:
На панели навигации выберите ().
Нажмите на ссылку с названием нужной среды исполнения, например, Default execution environment.
Скопируйте <execution_environment_id> в адресной строке браузера, которая имеет следующий вид
https://<address>/execution/infrastructure/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/gateway/v1/organizations/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<address> – FQDN или IP-адрес контроллера, например,
192.168.56.11;<your_token> – токен, полученный на предыдущем шаге, например,
3wijiG7********VtL2gseJESzjJsD;<your_organization_name> – название организации, например,
Jupiter;<execution_environment_id> – идентификатор среды исполнения, например,
2.
Organization
Добавьте полномочия Ansible Galaxy для созданной организации:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "id":<credentials_id> }' \ https://<address>/api/controller/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/controller/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/controller/v2/hosts/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<node_ip> – IP-адрес управляемого узла например,
10.2.0.6;<node_name> – название управляемого узла, например,
node01;<inventory_id> – идентификатор инвентаря, например,
3.
Host
Подготовка задания#
Для подготовки задания выполните следующие действия:
Создайте проект:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "<your_project_name>", "scm_type": "git", "scm_url": "https://github.com/ansible/ansible-tower-samples", "scm_branch": "master", "default_environment": <environment_id>, "credential": <credential_id>, "organization": <organization_id> }' \ https://<address>/api/controller/v2/projects/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<your_project_name> – название проекта, например,
Demo Project;<credentials_id> – идентификатор полномочий для доступа к источнику проекта, если такие полномочия необходимы.
Project
Создайте шаблон задания:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "name": "<job_templates_name>", "job_type": "run", "inventory": <inventory_id>, "project": <project_id>, "playbook": "<playbook_name>" }' \ https://<address>/api/controller/v2/job_templates/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере. Здесь
<job_templates_name> – название шаблона задания, например,
Demo Job templates;<project_id> – идентификатор проекта, созданного ранее, например,
12;<playbook_name> – название используемого набора сценариев, например,
hello_world.yml.
Job template
Добавьте полномочия для шаблона задания:
curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <your_token>' \ -d '{ "id":<credential_id> }' \ https://<address>/api/controller/v2/job_templates/<job_template_id>/credentials/ | jq .
Подставьте собственные значения параметров вместо употребленных в примере:
<credentials_id> – идентификатор полномочий для доступа к управляемому узлу, например,
1;<job_template_id> – идентификатор созданного ранее шаблона задания, например,
14.
Выполнение и проверка задания#
Для запуска и проверки статуса задания выполните следующие действия:
Запустите задание, используя созданный шаблон:
curl -X POST \ -H 'Authorization: Bearer <your_token>' \ https://<address>/api/controller/v2/job_templates/<job_template_id>/launch/ | jq .
Job template
Проверьте статус выполнения задания:
curl -X GET \ https://<address>/api/controller/v2/jobs/<id_job>/ \ -H 'Authorization: Bearer <your_token>' \ -k -s | jq .
Подставьте собственные значения параметров вместо употребленных в примере. Здесь <id_job> – идентификатор задания, запущенного ранее, например,
25.Job
Если в поле
failedуказано значениеfalse, значит задание завершилось успешно.