# Semaphore UI - веб для Ansible, Terraform и прочего

**URL:** <https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823>\
**Category:** Утилиты самохостинга\
**Created:** [04.Февраль.2026 10:40:27 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823 "2026-02-04T10:40:27Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [04.Февраль.2026 10:40:28 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/1 "2026-02-04T10:40:28Z")

</div>

> **[Modern UI and powerful API for Ansible, Terraform, OpenTofu, PowerShell and...](https://semaphoreui.com)**
>
> If your project has outgrown manual terminal deployments, Semaphore UI is the perfect solution for you.

UI для

- Terraform
- OpenTofu
- Bash
- PowerShell
- Python
- Terragrunt

### Интересности

- Проект развивается, обновления не очень крупные, но выходят часто
- SSO есть
- Веб хуки есть
- Уведомления на почту и в телегу есть
- Выполнение по расписанию есть
- Работа с GIT есть
- Пайплайны есть
- Проекты и права доступа есть
- Поддерживается темная тема и мобильная адаптивная версия
- Экспорта метрик я не нашел, есть [issue](https://github.com/semaphoreui/semaphore/issues/539) на эту тему

## Цены

- Бесплатная версия практически идеальна
- Платная версия с доп фишками

| Feature | Standard | Pro | Enterprise |
| --- | --- | --- | --- |
| Task execution | ✅ | ✅ | ✅ |
| Project runners management | — | ✅ (Pro users only) | ✅ |
| Terraform/OpenTofu HTTP backend | — | ✅ (Pro users only) | ✅ |
| Export logs to external systems | — | ✅ | ✅ |
| Two-factor authentication (2FA) | — | ✅ | ✅ |
| Task execution summary | — | ✅ | ✅ |
| Built-in Swagger API Docs | — | ✅ | ✅ |
| Requesting features | — | ✅ | ✅ |
| Support | Community-based | 24h guaranteed email support (Mon–Fri) | 12h or less support reply, faster with upgrades |
| High availability | — | — | ✅ |
| Onboarding help | — | — | ✅ |
| Help with upgrades | — | — | ✅ |
| Custom feature development | — | — | ✅ |

## Установка

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/7/70764d14b770a88230f6e0f9a57e9bf246645a81.png)

Я ставил в docker compose

```auto
  semaphore:
    ports:
      - 80:3000
    image: semaphoreui/semaphore:latest
    env_file:
      - secrets/semaphore.env
      - secrets/secrets.env
    volumes:
      - ./data:/var/lib/semaphore
      - ./config:/etc/semaphore
      - ./tmp:/tmp/semaphore
    depends_on:
      vault-agent:
        condition: service_healthy
    restart: unless-stopped

```

После установки у нас сразу создается демо проект (но это не точно)

**Проекты**  
Поддерживаются проекты, это все, что можно (кроме пользователей) объединенное в отдельном пространстве, права доступа назначаются на проект, внутри проекта все сущности, которые описываю дальше

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/a/a7ceeec18203577e2693f93f4b35716af784eaa7.png)

Главная страница встречает логом задач

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/d/d11329aa091f0118f33b06ac1701c3e31c72cd33.jpeg)

**Task templates**  
Мы тут видим все плейбуки, и прочие задачи, отображается статус последнего выполнения, задачи поделены на группы при помощи табов

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/b/bf41e2b6d380ecdf6733a3527b87f5f4dbcfa7b2.jpeg)

При нажатии на иконку запуска появляется всплывающее окно, содержимое зависит от типа задачи и ее параметров

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/8/8b2c4cb9f1a95d6af7572c70d0283386748c0d3e.png)

**Репозитории**  
В разделе репозиториев мы можем добавить репозитории, которые будем использовать, поддерживаются как публичные, так и приватные  
При запуске задачи из репозитория происходит скачивание актуальной версии

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/9/9eb1289d842532a29f4aa24aa66de03fb7e542ec.png)

**Ansible Inventory**  
Тут мы можем либо править руками, либо указать пусть к файлу в репозитории

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/e/e76d5d9d57e81f7663c37ce93717f45963b55050.png)  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/9/9b1cd756c1546eaedf2390d4399bb365b10cb586.png)  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/1/1d4280dd909515300fedd5e7ba4eb1b21e9b78b7.png)

**Variable groups**  
Тут без излишеств, только ручное добавление переменных и секретов, подтягивать откуда-то нельзя

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/d/d684d856e662a0a25a619d69a4b3bbcc47d148b3.png)

**Key Store**  
Содержит креды для самих плейбуков и репозиториев

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/9/9b6532f3786d6d789e0a4a3b03e94bb28d2103a2.png)

**Ansible Playbook**  
Тут мы указываем репозитрий с плейбуком, inventory, var group и собственно, сам путь к плейбуку  
Ну и россыпь настроек, в том числе можно спрашивать пользователя при старте

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/9/9153628c8959a53f000eec555aaa773679f4a7ad.jpeg)  
Например, у меня для деплоя сертификата указывается домен (сертификат)  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/8/8b3f5d7230dc8ff1732d8f941103573299b23742.png)  
**Terraform/Terragrunt/Opentofu**  
Тут все похоже: тепозиторий и путь к соответствующему файлу, workspace, variable group. Можно включить автоапрув и прочее  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/e/e64fa37af59e6b18383a80b85df9fbecc98b966f.jpeg)  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/c/cee145c2644babb578ec2bf5cd61fca4fac78f33.png)

**Bash/Python/Powershell**  
Тут минимальный функционал: опять репозиторий и скрипт, Var Group (устанавливаются переменные окружения)

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/7/7da6b0c451a4ab1e7a59c7b36d96801d719937fd.png)

**Лог таски**  
При запуске отображается индикатор выполнения и можно посмотреть лог в режиме реального времени

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/5/555ea8ab1bfe58035e5a3fca545bd2afd9d78d4d.jpeg)  
Внизу видна общая информация по выполенению, но это фишка не Semaphore UI  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/a/ad72a924d0abf6210f315546aec869223277aac4.png)  
Вкладка с деталями  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/2/27e04658ce14be5dafd6cda5cc98bddabedff754.jpeg)  
Вкладка с общей информацией  
А вот тут нас встречает первый платный функционал, количество и список серверов, на которых выполнилось успешно или с ошибкой надо смотреть на 1 владке, а не тут  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/5/5792d61b183bb990d43a7cfeb821052e3b191816.png)

**Расписание**  
Можно настроить запуск таски по расписанию, тогда будет работать автоматом

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/a/abbe8c5ada5585cb6344b4ff374e372ce8533ee1.png)

**Integrations**  
Тут мы можем создавать веб хаки для запуска наших тасок

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/f/ff66df320019928a78badc2e1d03dde8ecf7ef35.png)  
Для каждой интеграции указывается таска, тип аутентификаиции и кючи, как мы видим, можно подключить гитхабу и битбакету в качестве вебхука (при пуше в репозиторий будет выполняться)  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/1/119370a983ddc5a7d977a3329b8a582def01dea0.png)  
На странице интеграции указывается URL, который надо прописать на обратной стороне и переменные, которые извлекаются из запроса и подставляются в таску  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/c/c78935974013c2089ee6277b9470033df8bd4801.png)

Вот пример запуска вебхука при генерации нового letsencrypt сертификата

```auto
if [! -z "$WEBHOOK_URL"] ; then
    curl --location $WEBHOOK_URL \
    --header "X-Token: ${WEBHOOK_TOKEN}" \
    --header 'Content-Type: application/json' \
    --data "{
        \"domain\": \"$DOMAIN\"
    }"
    echo "✅ Webhook успешно отправлен"
fi

```

**Права доступа**  
В рамках проекта настраиваются права доступа ко всему, что есть внутри проекта

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/2/27611bdcef40ec66dbaaab5ae2bebbe4c3938039.png)

**Ну и остальные вклладки свойств проекта (history показывал одним из первых скриншотов)**  
**Статистика запуска задач**

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/e/ec7bc0618cadddf507426c325f33c192f7d63464.png)  
**Лог активности**  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/5/5549036f81114906750874baba7934f19cc61572.jpeg)  
**Настройки**  
Тут можно настроить количество параллельных выполнений и ID TG чата для уведомлений  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/3/3dda7eefbb1bf336740e90c58e653bbe18ff5316.png)  
В чате это выглядит так  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/d/d8310d117e015cb6451310c19d6bbc6218b9abe7.png)  
Можно настроить различные типы уведомлений  
 ![image](https://forum.samohosting.ru/uploads/default/original/2X/c/c72bb15068f4f809cc4e7b5346b45e136d968f5d.png)

**Вкладка Runners**  
Встречает нас еще одним платным функционалом, бесплатно Semaphore UI запускает все у себя, но для хомлабы этого достаточно

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/a/a0fa7fa0686a62dc610bafc80695a04c29de838a.png)

**Официальная дока практически идеальна**

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/8/8a00b23984ad542177a944630aa7d38a7640f36b.jpeg)

## Выводы

Очень крутая система для запуска автоматизаций, по сути, не надо в репозиториях писать раннеры, а достаточно из них вызывать вебхук

Бесплатный функционал вполне достаточен для жизни, можно частично обойти ограничения, например, вот так у меня vault-agent передает секреты из openbao

```auto
# Managed by vault-agent and https://openbao.domain.com
{{ with secret "kv/services/semaphore/secrets" }}
{{- range $key, $value := .Data.data -}}
{{ printf "%s=%s\n" $key $value }}
{{- end }}
# Forvard envs to playbook
{{ $first := true -}}
{{ printf "SEMAPHORE_FORWARDED_ENV_VARS='[" -}}
{{- range $key, $_ := .Data.data -}}
  {{- if not $first }},{{ end -}}
  {{- printf "\"%s\"" $key -}}
  {{- $first = false -}}
{{- end -}}
{{- printf "]'\n" -}}
{{- end }}

```

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [04.Февраль.2026 14:15:38 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/2 "2026-02-04T14:15:38Z")

</div>

сколько времени открыта вкладка, все никак не посмотрю

[![](https://forum.samohosting.ru/uploads/default/original/2X/2/232e253536360b73b56dc20280f2b394cbfd5f75.jpeg "Semaphore - отличная и простая UI для Ansible. Автоматизация!") ](https://www.youtube.com/watch?v=g_C2i21b6Og)

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [04.Февраль.2026 17:32:17 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/3 "2026-02-04T17:32:17Z")

</div>

Тут выясил, что оказывается, Inventory [умеет брать](https://semaphoreui.com/docs/user-guide/inventory/netbox-dynamic-inventory) из NetBox, это еще одна интересная штука для каталогизации и документизации IT инфраструктуры. Пока не пробовал данный плагин, но есть желание таки довести до ума NetBox и использовать его как первичный источник данных о сети и хомлабе

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [04.Февраль.2026 17:33:40 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/4 "2026-02-04T17:33:40Z")

</div>

NetBox тоже хочу заюзать, тоже ролики открыл, но еще не смотрел

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [04.Февраль.2026 17:51:44 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/5 "2026-02-04T17:51:44Z")

</div>

Он прикольный, но python, тяжеловатый достаточно. Ну и были проблемы с вылетом страницы устройства, но вот с последним релизом поправили.

Там по хорошему, надо все собирать из реальной сети, о я готовых компонентов не нашел, которые бы мне подошли. В итоге начал с NodeRed, он работает для простых задач, но когда надо импортировать содержимое PVE кластера в NetBox, то тут вылезают сразу сложности.

У меня была мысль написать на Python же скрипты синхронизации и запускать внутри Semaphore UI, есть неплохие либы работы как с PVE, так и с Netbox, ну а дальше обмазаться еще тегами и настроить выгрузку DNS записей для привязки доменов сервисов к конкретной ноде PVE

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [04.Февраль.2026 17:58:00 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/6 "2026-02-04T17:58:00Z")

</div>

а руками нельзя что ли добавить?

и чего тяжелого в питоне? вроде он быстрей работает чем пхп

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [04.Февраль.2026 18:19:10 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/7 "2026-02-04T18:19:10Z")

</div>

> [@kalobyte](#):
>
> а руками нельзя что ли добавить?

Можно, а зачем ?(с)  
У них идеология такая, что все должно строиться автоматически, в облачной версии есть несколько ИИшных инструментов, которые собирают информацию об оборудоваии и грузят ее в NetBox, а у NetBox есть типа очень крутая апишка

Руками я создавал стойки, железки, VLANы, сегменты сети и какие-то коммуникации, в целом, руками заводить на таком уровне можно.

А далее DHCP сервер при выделении IP адреса вызывает вебхук, который добавляет адрес в IPAM, при выделении статического адреса я сразу вижу какие свободы, а какие заняты.

Другой скрипт проходится по виртуалкам и контейнерам в кластере и создает их в NetBox, заполняет выделенные ресурсы, ссылки, вот мне осталось сетевые интерфейсы. Но есть [вот такой готовый проект](https://github.com/creekorful/netbox-pve-sync)

Было бы неплохо еще сделать линковку портов коммутаторов на основе таблиц MAC адресов

> [@kalobyte](#):
>
> и чего тяжелого в питоне? вроде он быстрей работает чем пхп

Ну по сравнению с современными Go/Rust приложухами, которые оперативку только нюхают, у меня что Authentik, что Netbox, что HomeAssistant являются самыми жирными сервисами, как по фоновой оперативке, так и по фоновому процессору. Что-то уровня N4000 уже не вывозит.

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/d/d01a9e063d04d6cc31a52c8548f0e8ca5dd2af41.jpeg)  
Хотя… не все так очевидно оказалось

---

<div class="post-metadata">

**Author:** ![ntdvme](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/n/bcef8e/32.png) [@ntdvme](https://forum.samohosting.ru/u/ntdvme)\
**Post date:** [11.Февраль.2026 08:48:21 UTC](https://forum.samohosting.ru/t/semaphore-ui-veb-dlya-ansible-terraform-i-prochego/1823/8 "2026-02-11T08:48:21Z")

</div>

Раньше, когда начал изучать ансибл пользовался семафором. Потом устал делать репозиторий и пайплайны, ушел в гитлаб. После того как гитлаб начал жрать неразумно много ресуров вернулся снова в gitea, но уже без семафора. там есть gitea actions, которые в целом дают почти такой же функционал, за исключением пары моментов - уведомления об ошибках при запланированном задании сейчас отсутствуют
