Налаштування 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, створюємо проєкт і додаємо репозиторій з плейбуками. Покрокова інструкція з розгортання:
- Створіть файл
docker-compose.ymlіз зазначеним вмістом та файл.envзі зміннимиDB_PASSWORD,ADMIN_PASSWORD,ENCRYPTION_KEY. - Запустіть
docker-compose up -d. - Відкрийте браузер на
http://localhost:3000, увійдіть як admin, створіть проект та додайте репозиторій. - Перевірте перший запуск: після додавання репозиторію виконайте тестовий плейбук.
-
Налаштуйте резервне копіювання: для 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 працює на ваших плейбуках.







