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.
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.
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.
How to use
- 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
- Open
http://localhost:3000and log in with the admin credentials.
- Add your Git repository containing Ansible playbooks or Terraform configs.
- Create a task template pointing to a playbook/plan and run it from the UI.
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.
Related on TokRepo
- DevOps Tools -- Infrastructure automation and deployment tools
- Self-Hosted Solutions -- Self-hosted platforms for team operations
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
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.
Yes. Semaphore supports Terraform as a task type alongside Ansible and Bash. You configure the Terraform working directory and variables in the task template.
Yes. Semaphore is open source under the MIT license. There is no paid version. The project is community-maintained.
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.
Yes. Semaphore supports multiple users with project-level permissions. Admins can control who can view, edit, or run tasks within each project.
Citations (3)
- Semaphore GitHub— Open-source UI for Ansible and Terraform automation
- Ansible Documentation— Ansible playbook execution and management
- Semaphore Documentation— Terraform integration support
Related on TokRepo
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.