Данный python-скрипт позволяет формировать JSON с перечнем групп, хостов и переменных, на которые необходимо производить какие-то действия в AWX Playbook Run. Например, необходимо раскатывать ansible роль не на все хосты из hosts.ini, а только на те, у которых были произведены какие-то изминения.
- Обращаемся к
API GitLabдля получения списка коммитов. - В последнем коммите ищем правки в директории
host_vars. - С помощью модуля
configparserпарсим файлhosts.ini. - Если в
host_varsбыли правки, берем эти конкретные хосты и в функцииget_parent_changed_hostsопределяем родительские и дочерние группы. Если правок не было, тогда уже работаем со всеми хостами изhosts.ini. - Получаем переменные для хостов из папки
group_vars. - Формируем и выводим
JSON.
- Во вкладке Resources перейти в
Projects. НажатьAdd, чтобы создать проект. Заполнить такие поля как:
NameOrganizationSource Control TypeSource Control URLSource Control Branch/Tag/CommitSource Control CredentialUpdate Revision on Launch
- Во вкладке Resources перейти в
Inventories. НажатьAddиAdd inventory, чтобы создать инвентарь. Заполнить такие поля как:
NameOrganization
Перейти в раздел Sources. Нажать Add, чтобы создать источник для инвентаря. Заполнить такие поля как:
NameSource(выбратьSourced from a Project)Project(выбрать свой из первого пнутка)Inventory file(указать путь к python-скрипту в ansible репозитории, например,inventories/my-project/dynamic-inventory.py)Overwrite,Overwrite variables,Update on launch
- Нажать
Sync
Таким образом AWX берет скрипт из репозитория, исполняет его в своей среде, получает JSON, который переносит все группы, хосты и переменные из group_vars в свой раздел инвентаря Groups и Hosts соответственно. Эту информацию AWX будет использовать для исполнения, например, Playbook Run.