Ansible
С помощью Semaphore UI вы можете запускать playbook’и Ansible. Для этого нужно создать шаблон Ansible Playbook.
- Перейдите в раздел Task Templates, нажмите New Template, а затем Ansible Playbook.

- Настройте шаблон.
Шаблон позволяет задать следующие параметры:
- Репозиторий
- Путь к файлу playbook
- Рабочий каталог (необязательно)
- Инвентарь
- Группы переменных
- Vault’ы
- Дополнительн ые аргументы CLI (tags, skip-tags, limit, уровень подробности)
- Переменные окружения

Рабочий каталог
Используйте Working directory, чтобы запускать команды Ansible из подкаталога репозитория шаблона. Укажите путь относительно корня репозитория. Например, если ansible.cfg хранится в <repository>/automation, введите automation. Абсолютные пути и пути за пределами репозитория отклоняются. Если параметр не задан, Semaphore использует корень репозитория.
Рабочий каталог влияет на поведение Ansible, зависящее от текущего каталога процесса. Порядок поиска файла конфигурации Ansible включает ansible.cfg в текущем каталоге. Рабочий каталог также влияет на разрешение относительных путей в дополнительных аргументах CLI; примеры — --extra-vars @vars.yml и --private-key key.pem. Пути к playbook и файловому инвентарю остаются относительными к корням их репозиториев.
Изменение рабочего каталога само по себе не добавляет подкаталоги roles/ или collections/ этого каталога в пути поиска Ansible. Поиск ролей относительно playbook и коллекции рядом с playbook по-прежнему определяются расположением playbook. Тем не менее рабочий каталог может косвенно влиять на их обнаружение, если выбранный ansible.cfg задаёт roles_path или collections_path.
Типы шаблонов
Шаблон ansible-playbook может быть одного из следующих типов:
Task
Просто запускает указанные playbook’и с указанными параметрами.
Если вы собираетесь запускать шаблон через API с использованием функции limit, обязательно включите опцию Ansible prompts: Limit. Иначе limit, переданный в вызове API, будет проигнорирован. Для задачи, запущенной через API, это не приведёт к интерактивному запросу — задача выполнится без участия пользователя.
Build
Этот тип шаблона следует использовать для создания артефактов. Начальную версию артефакта можно указать в параметре шаблона. Каждый запуск увеличивает версию артефакта.

Semaphore не поддерживает артефакты «из коробки», он предоставляет только версионирование задач. Создание артефакта вы должны реализовать самостоятельно. Как это сделать, читайте в статье CI/CD.
Deploy
Этот тип шаблона следует использовать для развёртывания артефактов на целевые серверы. Каждый шаблон deploy связан с шаблоном build.
Это позволяет развернуть на серверы конкретную версию артефакта.
Параметры шаблона
Расписание
Вы можете настроить запуск задачи по расписанию, указав cron-расписание в настройках шаблона. Формат cron-выражений описан в документации.
Запуск задачи при появлении нового коммита в репозитории
Вы можете использовать cron, чтобы периодически проверять наличие новых коммитов в репозитории и запускать задачу при их появлении.
Например, у вас есть исходный код приложения в git-репозитории. Вы можете добавить его в Repositories и запускать задачу Build для новых коммитов.
Tags, skip-tags и limit
Шаблоны поддерживают параметры CLI Ansible:
--tags--skip-tags--limit
Их можно задать в шаблоне и переопределить при создании задачи. Если вы планируете передавать эти значения через API, убедитесь, что включены соответствующие подсказки.
Требования Galaxy
Перед запуском playbook Semaphore устанавливает роли и коллекции из файлов requirements.yml, найденных в каталоге playbook, в корне репозитория, а также в их подкаталогах roles/ и collections/, с помощью ansible-galaxy install --force.
Чтобы не выполнять установку при каждом запуске, Semaphore сохраняет контрольную сумму каждого файла требований и повторяет установку только при изменении файла. Этим поведением управляют две опции шаблона в сворачиваемом разделе Galaxy install options (под Ansible prompts):
- Skip Galaxy install — вообще не запускать
ansible-galaxy. Используйте эту опцию, если требования уже предустановлены в образе раннера. - Force Galaxy install — всегда запускать
ansible-galaxy install --force, игнорируя сохранённую контрольную сумму. Используйте эту опцию, если файл требований указывает на изменяющуюся цель (например, на ветку, а не на тег) и вы хотите получать последнюю версию при каждом запуске.
Опцию Skip Galaxy install можно вывести в форму запуска задачи, включив одноимённый флажок в разделе Prompts в нижней части этого блока. Если подсказка включена, значение, выбранное при запуске, переопределяет значение по умолчанию из шаблона.