Jacar mascot — reading along A laptop whose eyes follow your cursor while you read.
Herramientas

Semaphore: Ansible UI When the Team Grows

Semaphore: Ansible UI When the Team Grows

Actualizado: 2026-05-03

Semaphore[1] is the open-source web interface for running Ansible playbooks: simple, lightweight, self-hostable. Born as a pragmatic alternative to AWX (upstream open-source of Ansible Tower / Red Hat Ansible Automation Platform) — fewer features, but dramatically simpler to operate. For mid-size teams that have outgrown “run from laptop” but don’t need AWX complexity, it’s the sensible choice.

Key takeaways

  • Semaphore solves the four Ansible scale problems: audit, permissions, execution history, and centralised secrets.
  • The architecture is minimal: one Go binary, PostgreSQL, and Ansible available on the server or container.
  • RBAC covers five well-defined roles (admin, project owner, manager, task runner, guest).
  • Semaphore consumes ~500 MB RAM; AWX typically needs ~4 GB.
  • For teams of fewer than 50 with moderate needs, Semaphore is the right choice. AWX for large teams with complex workflows.

What Semaphore Solves

Problems arising as teams grow:

  • Audit: who ran which playbook when against which hosts?
  • Permissions: which users can run which playbooks against which inventory?
  • History: what output did that execution a week ago produce?
  • Schedules: periodic playbooks without dedicating a cron host.
  • Centralised secrets: vault keys, SSH keys, without distributing across laptops.

Architecture

Minimum components:

  • Semaphore server (Go, single binary).
  • Database: MySQL/MariaDB, PostgreSQL, or embedded BoltDB.
  • Ansible available on the server or container.

No distributed workers or complex queues. For teams with fewer than 100 simultaneous runs, sufficient.

Docker Install

yaml
version: "3.8"
services:
  semaphore:
    image: semaphoreui/semaphore:latest
    ports:
      - "3000:3000"
    environment:
      SEMAPHORE_DB_DIALECT: postgres
      SEMAPHORE_DB_HOST: postgres
      SEMAPHORE_DB_USER: semaphore
      SEMAPHORE_DB_PASS: ${DB_PASS}
      SEMAPHORE_DB: semaphore
      SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore
      SEMAPHORE_ADMIN_PASSWORD: ${ADMIN_PASS}
      SEMAPHORE_ADMIN_NAME: admin
      SEMAPHORE_ADMIN_EMAIL: admin@example.com
    volumes:
      - semaphore_data:/etc/semaphore
      - semaphore_tmp:/tmp/semaphore
    depends_on:
      - postgres

Start and log into http://localhost:3000 as admin.

Key Concepts

  • Project: isolated space with its inventory, keys, templates.
  • Inventory: list of hosts — static or dynamic (script, AWS, etc).
  • Key Store: SSH keys, passwords, vault passwords.
  • Repository: Git repo where your playbooks live. Semaphore pulls and executes.
  • Task Template: associates a playbook + inventory + keys. This is what runs.
  • Schedule: a template that runs on cron.

Semaphore vs AWX

Aspect Semaphore AWX
Deploy complexity Simple (Docker) Complex (Kubernetes recommended)
RBAC Basic-medium Advanced
Workflows Limited Advanced (graph)
Commercial support Yes (Red Hat)
Resource consumption ~500 MB RAM ~4 GB RAM
Learning curve Low Medium-high

Semaphore for teams of fewer than 50 with moderate needs. AWX for large teams with complex requirements.

Conclusion

Semaphore is the pragmatic option for mid-size teams wanting an Ansible UI without AWX complexity. Its simplicity focus is its strength: install in minutes, operate painlessly, covers real cases. For large organisations with complex workflow requirements, enterprise SSO, and multi-tenancy, AWX remains the reference. Choice should be based on team size and needs sophistication. Often, simple is right.

Was this useful?
[Total: 13 · Average: 4.4]
  1. Semaphore

Written by

CEO - Jacar Systems

Passionate about technology, cloud infrastructure and artificial intelligence. Writes about DevOps, AI, platforms and software from Madrid.