Skip to main content

semaphore

Introduction

Semaphore 它是一個免費、開源且輕量級的 Web UI,讓 Ansible 的使用變得更加輕鬆便捷。

Semaphore 的優勢

  • 簡化 Ansible 的操作: Semaphore 提供了直觀的圖形界面,讓你擺脫繁瑣的命令列操作,輕鬆管理 Ansible playbook。
  • 集中化的 playbook 管理: 可以將所有的 playbook 集中存放在 Git 倉庫中,方便版本控制和團隊協作。
  • 多環境管理: Semaphore 支援多環境管理,例如開發、測試和生產環境,讓你在不同環境中輕鬆執行 playbook。
  • 任務排程: 你可以使用 cron 表達式來設定 playbook 的執行時間,實現自動化任務排程。
  • 用戶管理: Semaphore 提供了用戶管理功能,方便團隊成員之間的權限控制。
  • 完整的任務歷史記錄: Semaphore 會記錄所有任務的執行歷史,方便你追蹤和除錯。

安裝 Semaphore

Semaphore 提供了多種安裝方式,例如:

  • 使用 snap 命令安裝
  • 使用 Linux 套件安裝 (Debian 或 Red Hat)
  • 使用 Docker 容器安裝 (推薦)
---
volumes:
semaphore-mysql:
driver: local
services:
mysql:
image: docker.io/library/mysql:8.3
hostname: mysql
volumes:
- semaphore-mysql:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_DATABASE=semaphore
- MYSQL_USER=semaphore
- MYSQL_PASSWORD=secret-password # change!
restart: unless-stopped
semaphore:
container_name: ansiblesemaphore
image: docker.io/semaphoreui/semaphore:v2.10.35
user: "${UID}:${GID}"
ports:
- 3000:3000
environment:
- SEMAPHORE_DB_USER=semaphore
- SEMAPHORE_DB_PASS=secret-password # change!
- SEMAPHORE_DB_HOST=mysql
- SEMAPHORE_DB_PORT=3306
- SEMAPHORE_DB_DIALECT=mysql
- SEMAPHORE_DB=semaphore
- SEMAPHORE_PLAYBOOK_PATH=/tmp/semaphore/
- SEMAPHORE_ADMIN_PASSWORD=secret-admin-password # change!
- SEMAPHORE_ADMIN_NAME=admin
- SEMAPHORE_ADMIN_EMAIL=admin@localhost
- SEMAPHORE_ADMIN=admin
- SEMAPHORE_ACCESS_KEY_ENCRYPTION= # add to your access key encryption ! command: head -c32 /dev/urandom | base64
- ANSIBLE_HOST_KEY_CHECKING=false # (optional) change to true if you want to enable host key checking
volumes:
- ./inventory/:/inventory:ro
- ./authorized-keys/:/authorized-keys:ro
- ./config/:/etc/semaphore:rw
restart: unless-stopped
depends_on:
- mysql

使用 Semaphore

Semaphore 設定步驟

Here is the text extracted from the image:

  1. At Inventory set host info (連線到哪個server/Group)
  2. At key store (ssh key / sudo user key)
  3. At Enviroment Variables Set up Environments (empty is ok)
  4. At Repositories set up (git remote)
  5. In the repo Create Playbooks and push (will clone from git remote everytime then excute)
  6. At Task Templates set up the playbook and run it 總結

Semaphore 是一個功能強大且易於使用的工具,它可以幫助你更好地管理和執行 Ansible playbook/ Terraform/ Powershel/ Bash。無論你是 Ansible 新手還是經驗豐富的用戶,Semaphore 都能提升你的工作效率。

Reference

Semaphore: 提升 Ansible 使用體驗的絕佳 Web UI