1、简介
Semaphore UI 是一个开源的CI/CD工具,专注于简化和自动化软件交付流程,可轻松管理和运行 Ansible playbook,提供了一个直观的 Web 用户界面(UI),帮助DevOps团队轻松管理任务、部署和流水线。
官网地址:https://semaphoreui.com/zh
2、部署教程
创建一个目录来存放 docker-compose.yml
文件和相关数据:
mkdir semaphore
cd semaphore-docker
vim docker-compose.yml
bash
services:
semaphore:
user: root
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_DIALECT: bolt
SEMAPHORE_ADMIN_PASSWORD: Admin@123
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: admin@localhost
SEMAPHORE_ADMIN: admin
TZ: Asia/Shanghai
volumes:
- ./semaphore/etc:/etc/semaphore
- ./semaphore/data:/var/lib/semaphore
运行 Docker Compose
在项目目录下运行docker-compose.yaml
docker-compose up -d
验证服务是否运行
docker-compose ps
3、使用教程
一、基础环境准备
- 确保Semaphore已部署
根据历史对话,您已通过Docker部署Semaphore,访问http://<服务器IP>:3000
,使用默认账号admin
和密码登录(若未修改需按配置调整)。 - 配置SSH免密登录
确保Semaphore服务器能通过SSH免密登录到目标主机(参考历史对话中的密钥配置步骤)。
二、创建Ansible项目
- 创建存储库(Repository)
- 方式一:Git仓库
在Semaphore中关联您的Ansible剧本Git仓库(支持HTTP/HTTPS/SSH协议),填写仓库地址、分支及SSH密钥(需提前配置)。 - 方式二:本地存储库
直接上传本地Ansible剧本文件到Semaphore的存储目录(默认路径为/tmp/semaphore
)。
- 方式一:Git仓库
- 配置库存文件(Inventory)
- 在Semaphore的"Inventory"页面中定义目标主机清单,包括IP地址、用户名、SSH密钥或密码。
- 支持动态库存(如通过脚本生成),需在库存配置中启用。
三、关联Ansible Playbook
- 创建任务模板(Task Template)
- 在项目中选择要运行的Playbook文件(如
playbook.yml
),指定库存文件和执行参数(如变量、环境变量)。 - 支持定时任务(Cron)和触发器(如Git提交后自动执行)。
- 在项目中选择要运行的Playbook文件(如
- 高级配置选项
- 并行执行:设置并发任务数以优化大规模部署效率。
- 超时设置:定义任务执行的最大时长,防止长时间阻塞。
四、执行与监控
- 运行任务
- 在任务模板页面点击"Run Task",启动Ansible Playbook执行。
- 支持手动触发或通过API调用(适用于CI/CD集成)。
- 查看执行状态
- 在"Jobs"页面实时监控任务进度,查看标准输出和错误日志。
- 任务失败时,Semaphore会通过邮件或Slack发送通知(需提前配置通知渠道)。
五、高级功能与优化
- 多用户协作与权限管理
- 通过角色(Role)分配不同用户的操作权限(如仅允许查看日志或执行任务)。
- 支持LDAP/Active Directory集成,实现企业级身份认证。
- 集成其他工具
- 与Jenkins、GitLab CI/CD联动,构建自动化流水线。
- 支持Terraform、Bash脚本等多工具任务混合执行。
- 日志与审计
- 所有任务执行记录均保存,支持按时间、用户、项目筛选。
- 导出日志为JSON或CSV格式,用于后续分析。
六、常见问题解决
- Playbook执行失败
检查库存文件中的主机连接状态、Ansible剧本语法(通过ansible-playbook --check
验证)。 - 权限不足
确保Semaphore服务用户(如semaphore
)对存储库和SSH密钥有读取权限。 - 数据库连接问题
若使用MySQL/PostgreSQL,检查环境变量中的数据库配置(如SEMAPHORE_DB_HOST
)。
示例流程
- 步骤1 :在Semaphore中创建名为
WebServerDeployment
的项目,关联Git仓库https://github.com/user/Ansible-Playbooks.git
。 - 步骤2 :配置库存文件
webservers.ini
,包含两台目标主机的IP和SSH密钥。 - 步骤3 :创建任务模板,选择Playbook
deploy-web.yml
,设置并行执行为2台主机。 - 步骤4:点击运行任务,监控执行状态,查看成功或失败详情。
通过以上步骤,您可高效利用Semaphore的Web界面管理Ansible任务,实现自动化部署与运维。