Что такое Semaphore
Semaphore UI — это самостоятельно размещаемый веб-интерфейс и REST API для запуска автоматизации, которая у вас уже есть. Вы указываете ему Git-репозиторий с вашими playbook'ами Ansible, конфигурациями Terraform или shell-скрип тами, сообщаете, какие учётные данные и хосты использовать, и он становится единым местом, где ваша команда запускает эту автоматизацию, хранит нужные ей секреты и ведёт историю каждого запуска.
Вы можете запускать задачи по отдельности или объединять их в единый конвейер с помощью Workflows (Pro), связывая сборку, тестирование, развёртывание и автоматизацию инфраструктуры.
Semaphore не заменяет Ansible, Terraform или ваши скрипты. Он запускает их — на сервере, а не на чьём-то ноутбуке.
Какую задачу он решает
Автоматизация обычно начинается на рабочей станции. У одного инженера есть playbook, инвентарь, SSH-ключ и нужная версия Ansible. Это работает до тех пор, пока то же самое не понадобится запустить второму человеку или пока кто-нибудь не спросит, что изменилось на хосте в прошлый вторник.
Semaphore переносит запуск на общий сервер и добавляет то, чего не хватало:
| Чего не хватает | Что даёт Semaphore |
|---|---|
| Инстр ументы нужно установить каждому | Они есть на одном сервере (или на раннере); пользователям нужен только браузер. |
| Учётные данные копируются между ноутбуками | Зашифрованное Хранилище ключей передаёт секреты запуску, а не пользователю. |
| Нет записи о том, кто что запускал | Каждая задача сохраняет свой вывод, код завершения, пользователя и время. |
| Никому не нужен root ради одного playbook'а | Роли определяют, кто может запускать, редактировать или только наблюдать. |
| Запуски происходят, когда кто-то о них вспомнит | Их начинают расписания, вебхуки и вызовы API. |
Кому он подходит
- Инфраструктурным и платформенным командам, которые уже используют Ansible или Terraform и хотят, чтобы коллеги могли запускать их, не получая на руки продуктивные учётные данные.
- Командам, создающим CI/CD-конвейеры, которые хотят объединять задачи сборки, тестирования и развёртывания с помощью рабочих процессов, а также запускать эксплуатационные задачи по расписанию и по требованию.
- Командам с CI/CD-платформой, которые хотят вынести эксплуатационные запуски — перезапуски, развёртывания, обновления сертификатов — из системы сборки и сделать их видимыми для тех, кто не читает YAML конвейеров.
Semaphore размещается на ваших мощностях. SaaS-версии нет: вы запускаете бинарный файл или контейнер в своей инфраструктуре, и ваши секреты её не покидают.
Что он запускает
Каждый шаблон задачи выбирает приложение:
- Ansible — playbook'и с инвентарями, паролями vault и полным
набором опций
ansible-playbook. - Terraform, OpenTofu и Terragrunt — plan и apply с workspace'ами и состоянием в вашем backend.
- Shell, PowerShell и Python — всё, что не покрывается перечисленным выше.
Задачи выполняются на самом сервере или на раннерах, размещённых рядом с системами, которыми они управляют.
Workflows (Pro) позволяют объединять шаблоны задач в конвейер с помощью визуального редактора. Каждый шаг может запускать своё приложение: например, собирать и тестировать исходный код с помощью shell-скриптов, создавать инфраструктуру с помощью Terraform, а затем выполнять развёртывание с помощью Ansible. Вы можете добавлять шаги согласования, паузы и ветвления при успешном завершении или ошибке. Semaphore автоматически запускает последующие задачи, когда выполняются их условия.
Когда его не стоит использовать
Знание границ экономит время в будущем.
- Замена Ansible или Terraform. У Semaphore нет собственного движка выполнения. Если ваш playbook не работает из командной строки, он не заработает и из Semaphore.
- Роль CMDB. Инвентари — это инвентари, нужные вашим запускам, а не источник истины о вашем парке систем. Формируйте их из вашего реального источника с помощью динамического инвентаря.
- Единый менеджер секретов организации. Секреты шифруются при хранении и предназначены для использования задачами, а не для чтения людьми. Если вы уже используете HashiCorp Vault или другое хранилище, подключите его, а не копируйте секреты внутрь.
- Одноузловой сервис, для которого недопустим простой. Для нескольких активных узлов нужна высокая доступность — это возможность редакции Enterprise, которая требует PostgreSQL или MySQL и Redis.
Что дальше
- Архитектура — процессы, база данных и место выполнения задач.
- Ключевые понятия — десять слов, которые интерфейс ожидает от вас знать.
- Начало работы — установите и запустите что-нибудь.