Типовой проект#

Использование типовой структуры проектов Ansible позволяет упростить их создание, использование и поддержку.

Файлы и каталоги#

Структура типового проекта Ansible, для запуска которого используется Automation Controller или Ansible Navigator, имеет следующий вид:

project/
├── playbooks/
│   ├── playbook1.yml
│   ├── playbook2.yml
│   │   ...
│   └── playbookK.yml
├── environments/
│   ├── dev/
│   ├── stage/
│   │   ...
│   └── prod/
│       ├── group_vars/
│       │   ├── main.yml
│       │   ├── smth.yml
│       │   └── smth_else.yml
│       └── inventory.yml
├── vars/
│   ├── vars1.yml
│   ├── vars2.yml
│   │   ...
│   └── varsN.yml
├── files/
│   ├── file1
│   ├── file2
│   │   ...
│   └── fileM
└── execution-environment.yml

Указанные файлы и каталоги используются для следующих целей:

  • playbooks/.

    Каталог с файлами наборов сценариев. Если проект содержит только один набор сценариев, допускается разместить файл с ним в корневом каталоге проекта.

  • environments/.

    Каталоги с файлами для различных окружений.

    Внутри environemnts/ для каждого окружения рекомендуется создать собственный каталог, в котором разместить:

    • каталог group_vars/ с файлами переменных для групп узлов;

    • файл инвентаря inventory.yml.

      Примечание

      Описание инвентаря необходимо только в том случае, когда проект разрабатывается для определенного списка управляемых узлов.

    Если проект разрабатывается под одно окружение, каталог environments/ и его подкаталоги можно не создавать, а его содержимое разместить в корне проекта:

    Структура проекта для одного окружения#
    project/
    ├── playbooks/
    │   ├── playbook1.yml
    │   ├── playbook2.yml
    │   │   ...
    │   └── playbookK.yml
    ├── group_vars/
    │   ├── main.yml
    │   ├── smth.yml
    │   └── smth_else.yml
    ├── inventory.yml
    ├── vars/
    │   ├── vars1.yml
    │   ├── vars2.yml
    │   │   ...
    │   └── varsN.yml
    ├── files/
    │   ├── file1
    │   ├── file2
    │   │   ...
    │   └── fileM
    └── execution-environment.yml
    

    Рекомендуемое название файла инвентаря в этом случае – inventory.yml.

  • vars/.

    Каталог с файлами, определяющими значения переменных для сценариев автоматизации.

    Если все переменные хранятся в одном файле, допускается разместить его в корневом каталоге проекта. Рекомендуемое название файла в этом случае – vars.yml.

  • files/.

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

  • execution-environment.yml.

    Файл определения среды исполнения, используемой для запуска набора сценариев. Подробности см. в инструкции по созданию собственных образов среды исполнения.

Примечание

Если для указания зависимостей вы используете файл requirements.yml, поместите его в корневой каталог проекта.

Применение проекта#

Для запуска проекта рекомендуется использовать Automation Controller или Ansible Navigator.

Automation Controller#

Чтобы использовать Automation Controller для запуска проекта, выполните следующие действия:

  1. Создайте полномочия нужного типа, следуя инструкции.

    Понадобятся как минимум следующие полномочия:

    Тип полномочия

    Тип ресурса

    Реестр контейнеров

    Private Automation Hub

    Система управления версиями (Source Control)

    Система управления кодом, в которой хранится проект

    Машина (Machine)

    Управляемые узлы

  2. Добавьте в Automation Controller образ среды исполнения, следуя инструкции по загрузке образов.

  3. Создайте проект согласно инструкции по созданию проектов.

  4. Создайте инвентарь нужного типа и добавьте в него сведения об управляемых узлах.

  5. Используйте набор сценариев из проекта для создания шаблона заданий.

  6. Запустите задание, следуя инструкции по запуску заданий на основе шаблона.

Ansible Navigator#

Чтобы использовать Ansible Navigator для запуска проекта, выполните следующие действия:

  1. Загрузите код проекта в рабочий каталог.

  2. Создайте в корневом каталоге проекта файл ansible.cfg, в котором укажите необходимые настройки, например, путь к инвентарю.

  3. Для запуска набора сценариев используйте команду:

    ansible-navigator run --eei <image> path/to/playbook.yml
    

    Здесь:

    • <image> – название образа среды исполнения, используемого для запуска заданий;

    • /path/to/playbook.yml – путь к файлу набора сценариев относительно корневого каталога проекта.