Налаштування Semaphore UI для керування Ansible

Коли плейбуків стає більше, а запуск Ansible через консоль — незручним, настає час веб-інтерфейсу. Ми налаштовуємо Semaphore UI — легку альтернативу AWX, яка запускається в Docker і закриває базові потреби команди. Реалізуємо проєкт під ключ: від встановлення до підтримки, з подальшим супроводом і без зриву термінів.
Часті запитання

Налаштування Semaphore UI для керування Ansible

Ми часто стикаємося з ситуацією: команда використовує Ansible, але запуск плейбуків через консоль перестає бути зручним, коли сценаріїв більше п'яти, а інженерів — три. AWX здається важким і потребує Kubernetes або великої VM. Semaphore UI — легка open-source альтернатива. Вона запускається в одному Docker-контейнері, займає менше 512 МБ RAM у простої та закриває базові потреби: зберігання SSH-ключів, інвентарі, запуск плейбуків через веб-інтерфейс, розклади та історія виконання. За нашими оцінками, впровадження Semaphore обходиться в 3,75 рази дешевше, ніж розгортання AWX (від $800 проти від $3000), економія складає до $2200. Економія ресурсів — до 80% порівняно з AWX. Вартість впровадження Semaphore під ключ — від $800, тоді як AWX — від $3000. Економія — $2200.

Наш досвід показує, що цей інструмент ідеально вписується в сценарії, де не потрібні Survey-форми або складний RBAC на рівні окремих завдань. Якщо у вас 2–5 інженерів і до 20 плейбуків — Semaphore впорається на 100%. А якщо потрібна інтеграція з GitLab CI — ми додаємо REST API, і все літає. Замовте консультацію — ми допоможемо оцінити, чи підходить це рішення під ваш проект.

Як порівнюються Semaphore та AWX?

Semaphore простіший у розгортанні та експлуатації. Порівняємо ключові характеристики:

Параметр Semaphore AWX
Ресурси 512 МБ RAM, 1 vCPU 4 ГБ RAM, 2 vCPU (рекомендація)
Середовище Один Docker-контейнер + PostgreSQL Kubernetes або кластер Podman
RBAC Ролі на рівні проекту Ролі на рівні проектів, організацій, окремих ресурсів
Survey-форми Немає (параметри через Environment JSON) Є веб-форми з валідацією
Smart Inventory Немає Так (на основі фактів Ansible)
Інтеграція з CI/CD REST API (простий) REST API + вебхуки + модулі
Термін впровадження 1–3 дні 1–2 тижні
Вартість (під ключ) від $800 від $3000

Semaphore краще за AWX у 8 разів за споживанням пам'яті (512 МБ vs 4 ГБ), а термін впровадження коротший у 3-5 разів (1-3 дні vs 1-2 тижні). За вартістю Semaphore дешевший у 3,75 раза порівняно з AWX ($800 проти $3000). Для невеликих команд це вирішальний аргумент.

Як швидко розгорнути Semaphore?

Ми підготували типовий docker-compose.yml, який піднімає Semaphore разом із PostgreSQL. Ключовий момент — генерація SEMAPHORE_ACCESS_KEY_ENCRYPTION:

---
# docker-compose.yml services:
semaphore:
  image: semaphoreui/semaphore:v2.10.22
  environment:
    SEMAPHORE_DB_DIALECT: postgres
    SEMAPHORE_DB_HOST: postgres
    SEMAPHORE_DB_PORT: 5432
    SEMAPHORE_DB_USER: semaphore
    SEMAPHORE_DB_PASS: ${DB_PASSWORD}
    SEMAPHORE_DB: semaphore
    SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
    SEMAPHORE_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    SEMAPHORE_ADMIN_NAME: admin
    SEMAPHORE_ADMIN_EMAIL: [email protected]
    SEMAPHORE_ADMIN: admin
    SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${ENCRYPTION_KEY}
    TZ: Europe/Moscow
  ports:
    - "3000:3000"
  depends_on:
    - postgres
postgres:
  image: postgres:15-alpine
  environment:
    POSTGRES_USER: semaphore
    POSTGRES_PASSWORD: ${DB_PASSWORD}
    POSTGRES_DB: semaphore
  volumes:
    - pg_data:/var/lib/postgresql/data

SEMAPHORE_ACCESS_KEY_ENCRYPTION — 32-символьний ключ. Генерується один раз:

openssl rand -base64 32 

Після запуску заходимо на порт 3000, створюємо проєкт і додаємо репозиторій з плейбуками. Покрокова інструкція з розгортання:

  1. Створіть файл docker-compose.yml із зазначеним вмістом та файл .env зі змінними DB_PASSWORD, ADMIN_PASSWORD, ENCRYPTION_KEY.
  2. Запустіть docker-compose up -d.
  3. Відкрийте браузер на http://localhost:3000, увійдіть як admin, створіть проект та додайте репозиторій.
  4. Перевірте перший запуск: після додавання репозиторію виконайте тестовий плейбук.
  5. Налаштуйте резервне копіювання: для PostgreSQL використовуйте pg_dump або вбудовані засоби.
Додатково: налаштування HTTPS та резервного копіювання

Для production-середовища рекомендується налаштувати зворотний проксі (nginx/caddy) з Let’s Encrypt та регулярні бекапи PostgreSQL. Приклад конфігурації nginx – офіційна документація Semaphore.

Як інтегрувати Semaphore UI з CI/CD?

Semaphore має REST API — ми використовуємо його для запуску завдань з GitLab CI. Ось приклад скрипту:

# Отримати token
TOKEN=$(curl -s -X POST https://semaphore.mycompany.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"auth": "admin", "password": "'$SEMAPHORE_ADMIN_PASSWORD'"}' \
  | jq -r '.token')

# Запустити Task Template з ID=5
curl -X POST https://semaphore.mycompany.com/api/project/1/tasks \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "template_id": 5, "environment": "{\"app_version\": \"'"$CI_COMMIT_TAG"'\"}", "message": "Deploy from CI: '"$CI_COMMIT_SHA"'" }'

Статус перевіряємо polling'ом або через webhook (Semaphore 2.9+).

Які основні компоненти Semaphore?

Компонент Призначення
Key Store Зберігання SSH-ключів та паролів, шифрується в БД
Inventory Список керованих хостів (статичний YAML/INI або dynamic)
Environment Змінні оточення (extra_vars), зберігаються в JSON
Repository Git-репозиторій з Ansible-плейбуками
Task Template Зв'язка: репозиторій + плейбук + інвентар + ключ + environment

Що входить в роботу під ключ

Наша компанія має 5+ років досвіду впровадження Ansible та DevOps, успішно реалізувала понад 30 проектів з автоматизації. Коли ви замовляєте у нас впровадження Semaphore, ми надаємо:

  • Розгортання Semaphore + PostgreSQL (Docker або bare metal)
  • Налаштування шифрування ключів та інтеграцію з вашим Git (GitHub, GitLab, Bitbucket)
  • Створення проектів, інвентарів, ключів та Task Template
  • Інтеграцію з CI/CD (приклади скриптів)
  • Документацію з адміністрування та сценаріїв відкату
  • Навчання команди (1–2 години)
  • Гарантію працездатності на 2 тижні після здачі

Терміни: від 1 до 3 днів залежно від кількості проектів. Оцінимо проект — зв'яжіться з нами. Отримайте консультацію нашого інженера з впровадження.

Які обмеження Semaphore та коли варто обрати AWX?

Semaphore простіший — це плюс і мінус. Немає Survey-форм (параметри через Environment JSON), Smart Inventory та RBAC на рівні окремих плейбуків. Для великої команди з розмежуванням доступу краще AWX. Але для 2–5 інженерів і десятка плейбуків Semaphore — вірне рішення. Замовте пілотне впровадження — ми покажемо, як Semaphore працює на ваших плейбуках.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142