ConfigsApr 17, 2026·3 min read

Semaphore — Modern UI for Ansible & Terraform Automation

Semaphore provides a beautiful web interface for running Ansible playbooks, Terraform plans, and Bash scripts with inventory management, scheduling, and team collaboration.

TL;DR
Semaphore is a web UI for running Ansible playbooks and Terraform plans with scheduling, team access, and inventory management.
§01

What it is

Semaphore provides a web-based interface for running Ansible playbooks, Terraform plans, and Bash scripts. Instead of SSH-ing into a server and running ansible-playbook manually, teams use Semaphore to manage inventories, schedule runs, track execution history, and control access through a browser.

The tool targets DevOps teams, sysadmins, and infrastructure engineers who already use Ansible or Terraform but want a shared execution environment with audit trails and role-based access. It is open source and self-hosted.

§02

How it saves time or tokens

Running Ansible playbooks from individual developer laptops creates inconsistency: different Python versions, missing SSH keys, no execution history. Semaphore centralizes playbook execution on a server with a consistent environment, stores run history, and provides team-level access control. Scheduling recurring playbooks (patch updates, compliance checks) replaces manual cron jobs with a visual scheduler.

§03

How to use

  1. Run Semaphore with Docker:
docker run -d --name semaphore \
  -p 3000:3000 \
  -e SEMAPHORE_DB_DIALECT=bolt \
  -e SEMAPHORE_ADMIN_PASSWORD=changeme \
  -e SEMAPHORE_ADMIN_NAME=admin \
  -e SEMAPHORE_ADMIN=admin \
  semaphoreui/semaphore:latest
  1. Open http://localhost:3000 and log in with the admin credentials.
  1. Add your Git repository containing Ansible playbooks or Terraform configs.
  1. Create a task template pointing to a playbook/plan and run it from the UI.
§04

Example

# playbook.yml - Sample Ansible playbook managed by Semaphore
- hosts: web_servers
  become: yes
  tasks:
    - name: Update packages
      apt:
        update_cache: yes
        upgrade: safe

    - name: Ensure nginx is running
      service:
        name: nginx
        state: started
        enabled: yes

Import this playbook into Semaphore, configure the inventory, and run it from the web UI with full execution logs.

§05

Related on TokRepo

§06

Common pitfalls

  • Semaphore requires Ansible or Terraform installed on the server where it runs. The Docker image includes Ansible but you may need to add Terraform manually.
  • The bolt database (embedded) is fine for small teams but does not scale. Use PostgreSQL or MySQL for production deployments with multiple users.
  • SSH keys and credentials must be configured in Semaphore's key store. Missing or misconfigured keys are the most common cause of failed task runs.

Frequently Asked Questions

Does Semaphore replace Ansible Tower/AWX?+

Semaphore is a lighter alternative to AWX. AWX offers more enterprise features like RBAC, inventory plugins, and workflow chaining. Semaphore is simpler to deploy and maintain, making it better suited for small to medium teams.

Can Semaphore run Terraform plans?+

Yes. Semaphore supports Terraform as a task type alongside Ansible and Bash. You configure the Terraform working directory and variables in the task template.

Is Semaphore free?+

Yes. Semaphore is open source under the MIT license. There is no paid version. The project is community-maintained.

Does Semaphore support scheduling?+

Yes. You can schedule task templates to run on a cron-like schedule directly from the web UI. This is useful for recurring playbooks like security updates or backup verification.

Can multiple team members use Semaphore?+

Yes. Semaphore supports multiple users with project-level permissions. Admins can control who can view, edit, or run tasks within each project.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets