Перейти к основному содержимому

Что такое 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.

Что дальше