ansible可视化自动化平台-semaphore

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、使用教程

一、基础环境准备

  1. 确保Semaphore已部署
    根据历史对话,您已通过Docker部署Semaphore,访问 http://<服务器IP>:3000,使用默认账号 admin 和密码登录(若未修改需按配置调整)。
  2. 配置SSH免密登录
    确保Semaphore服务器能通过SSH免密登录到目标主机(参考历史对话中的密钥配置步骤)。

二、创建Ansible项目

  1. 创建存储库(Repository)
    • 方式一:Git仓库
      在Semaphore中关联您的Ansible剧本Git仓库(支持HTTP/HTTPS/SSH协议),填写仓库地址、分支及SSH密钥(需提前配置)。
    • 方式二:本地存储库
      直接上传本地Ansible剧本文件到Semaphore的存储目录(默认路径为 /tmp/semaphore)。
  2. 配置库存文件(Inventory)
    • 在Semaphore的"Inventory"页面中定义目标主机清单,包括IP地址、用户名、SSH密钥或密码。
    • 支持动态库存(如通过脚本生成),需在库存配置中启用。

三、关联Ansible Playbook

  1. 创建任务模板(Task Template)
    • 在项目中选择要运行的Playbook文件(如 playbook.yml),指定库存文件和执行参数(如变量、环境变量)。
    • 支持定时任务(Cron)和触发器(如Git提交后自动执行)。
  2. 高级配置选项
    • 并行执行:设置并发任务数以优化大规模部署效率。
    • 超时设置:定义任务执行的最大时长,防止长时间阻塞。

四、执行与监控

  1. 运行任务
    • 在任务模板页面点击"Run Task",启动Ansible Playbook执行。
    • 支持手动触发或通过API调用(适用于CI/CD集成)。
  2. 查看执行状态
    • 在"Jobs"页面实时监控任务进度,查看标准输出和错误日志。
    • 任务失败时,Semaphore会通过邮件或Slack发送通知(需提前配置通知渠道)。

五、高级功能与优化

  1. 多用户协作与权限管理
    • 通过角色(Role)分配不同用户的操作权限(如仅允许查看日志或执行任务)。
    • 支持LDAP/Active Directory集成,实现企业级身份认证。
  2. 集成其他工具
    • 与Jenkins、GitLab CI/CD联动,构建自动化流水线。
    • 支持Terraform、Bash脚本等多工具任务混合执行。
  3. 日志与审计
    • 所有任务执行记录均保存,支持按时间、用户、项目筛选。
    • 导出日志为JSON或CSV格式,用于后续分析。

六、常见问题解决

  • Playbook执行失败
    检查库存文件中的主机连接状态、Ansible剧本语法(通过 ansible-playbook --check 验证)。
  • 权限不足
    确保Semaphore服务用户(如 semaphore)对存储库和SSH密钥有读取权限。
  • 数据库连接问题
    若使用MySQL/PostgreSQL,检查环境变量中的数据库配置(如 SEMAPHORE_DB_HOST)。

示例流程

  1. 步骤1 :在Semaphore中创建名为 WebServerDeployment 的项目,关联Git仓库 https://github.com/user/Ansible-Playbooks.git
  2. 步骤2 :配置库存文件 webservers.ini,包含两台目标主机的IP和SSH密钥。
  3. 步骤3 :创建任务模板,选择Playbook deploy-web.yml,设置并行执行为2台主机。
  4. 步骤4:点击运行任务,监控执行状态,查看成功或失败详情。

通过以上步骤,您可高效利用Semaphore的Web界面管理Ansible任务,实现自动化部署与运维。

相关推荐
千航@abc10 小时前
Ansible 实战:Roles,运维的 “魔法函数”
ansible·playbook·roles·角色·模版·剧本
树下一少年12 小时前
通过ansible+docker-compose快速安装一主两从redis+三sentinel
redis·docker·ansible·sentinel·docker-compose
独隅1 天前
针对Ansible执行脚本时报错“可执行文件格式错误”,以下是详细的解决步骤和示例
运维·开发语言·ansible·lua·lua5.4
大小科圣2 天前
Ansible playbook
ansible
大小科圣2 天前
ansible条件判断及循环
ansible
狂奔solar4 天前
ansible-playbook 写arm版达梦7数据库的一键安装脚本
ansible
晴天Y284 天前
ansible角色 role
ansible
在野靡生.4 天前
Ansible(1)—— Ansible 概述
linux·运维·ansible
在野靡生.5 天前
Ansible(4)—— Playbook
linux·运维·ansible