# 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. ## Install Save in your project root: # Semaphore — Modern UI for Ansible & Terraform Automation ## Quick Use ```bash 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_EMAIL=admin@localhost -e SEMAPHORE_ADMIN=admin semaphoreui/semaphore:latest ``` ## Introduction Semaphore is a modern open-source alternative to Ansible Tower and AWX. It provides a clean web UI for managing Ansible playbooks, Terraform configurations, Bash scripts, and PowerShell tasks with proper inventory management, credential storage, scheduling, and audit logging. ## What Semaphore Does - Runs Ansible playbooks and roles through a visual web interface - Manages inventories, credentials, and environment variables centrally - Supports Terraform, OpenTofu, Bash, and PowerShell task runners - Provides scheduled and webhook-triggered task execution - Tracks task history with real-time log streaming and audit trails ## Architecture Overview Semaphore is written in Go with a Vue.js frontend. It stores configuration in MySQL, PostgreSQL, or the embedded BoltDB for single-node setups. Task execution spawns Ansible, Terraform, or shell processes on the host. Git repositories are cloned locally for playbook and role access. The API follows REST conventions and supports token-based authentication. ## Self-Hosting & Configuration - Deploy via Docker with BoltDB for simple setups or MySQL/PostgreSQL for production - Configure database, admin credentials, and LDAP via environment variables - Store SSH keys and vault passwords as encrypted credentials in the UI - Set up Git repository connections for pulling playbooks and roles - Place behind Nginx or Traefik with TLS for secure remote access ## Key Features - Multi-runner support for Ansible, Terraform, OpenTofu, Bash, and PowerShell - Cron-based scheduling and webhook triggers for automated execution - Role-based access control with team and project-level permissions - Real-time task log streaming with full execution history - REST API for integrating with CI/CD pipelines and external tools ## Comparison with Similar Tools - **AWX/Ansible Tower** — Heavy Java-based stack; Semaphore is lightweight Go with simpler setup - **Rundeck** — Enterprise job scheduler; Semaphore focuses on Ansible-native workflows - **Jenkins** — General CI/CD; Semaphore is purpose-built for infrastructure automation - **Terraform Cloud** — Managed service; Semaphore is self-hosted and supports multiple runners - **Portainer** — Container management; Semaphore manages configuration automation tasks ## FAQ **Q: Does Semaphore replace Ansible Tower?** A: For many teams, yes. Semaphore covers playbook execution, inventory management, credentials, and scheduling without the heavyweight AWX stack. **Q: Can I use it without Ansible?** A: Yes. Semaphore supports Terraform, OpenTofu, Bash, and PowerShell as task runners independent of Ansible. **Q: What databases are supported?** A: MySQL, PostgreSQL, and BoltDB. BoltDB works for single-node deployments without external database dependencies. **Q: Is there LDAP or SSO support?** A: Yes. Semaphore supports LDAP authentication and OpenID Connect for single sign-on integration. ## Sources - https://github.com/semaphoreui/semaphore - https://docs.semaphoreui.com/ --- Source: https://tokrepo.com/en/workflows/16e56309-39f2-11f1-9bc6-00163e2b0d79 Author: AI Open Source