Ansible Semaphore API 接口全解析
2025-07-06 04:23:27作者:农烁颖Land
概述
Ansible Semaphore 是一个现代化的 Ansible 任务调度和可视化界面工具,它提供了丰富的 REST API 接口,允许开发者通过编程方式管理 Ansible 任务、项目和资源。本文将全面解析 Semaphore 的 API 接口规范,帮助开发者更好地理解和使用这些接口。
API 基础信息
Semaphore API 遵循 RESTful 设计原则,使用 JSON 作为主要数据交换格式,当前版本为 2.14.0-beta1。API 支持 HTTP 和 HTTPS 协议,基础路径为 /api
。
主要功能模块
1. 认证模块
认证模块提供用户登录、登出和 API 令牌管理功能:
- 登录接口:支持用户名/密码和 OIDC 认证
- API 令牌:可创建、管理和撤销访问令牌
- 登录元数据:获取可用的 OIDC 提供者信息
{
"auth": "user@semaphoreui.com",
"password": "your_password"
}
2. 用户管理
用户管理模块允许管理员创建、修改和查询用户信息:
- 用户基本属性:名称、用户名、邮箱、密码等
- 权限控制:管理员标识、告警设置等
- 用户类型:区分内部用户和外部用户
3. 项目管理
项目管理是 Semaphore 的核心功能,API 提供了完整的项目生命周期管理:
- 项目创建与配置:设置项目名称、告警配置、并行任务限制等
- 项目备份与恢复:完整的项目配置导出与导入
- 项目成员管理:分配项目角色(owner、manager、task_runner、guest)
4. 资源管理
Semaphore 提供了多种资源的管理接口:
4.1 访问密钥
支持三种类型的密钥管理:
- SSH 密钥:用于代码仓库访问
- 登录密码:用于认证
- 无密钥:不使用密钥
4.2 环境变量
环境变量分为两种类型:
- 环境变量(env):直接注入执行环境
- 任务变量(var):仅在任务中使用
4.3 库存管理
支持多种库存类型:
- 静态库存(static)
- 静态 YAML 库存(static-yaml)
- 文件库存(file)
- Terraform 工作区(terraform-workspace)
4.4 代码仓库
管理项目关联的 Git 仓库:
- 仓库 URL 和分支配置
- 关联的 SSH 密钥
5. 模板管理
模板是 Semaphore 中定义 Ansible 任务的核心组件:
- 基础配置:关联库存、仓库、环境等资源
- 任务参数:Playbook 路径、参数、描述等
- 高级功能:
- 参数覆盖控制
- 成功告警抑制
- 自动运行设置
- 调查变量(Survey Variables)
6. 任务管理
任务执行相关接口:
- 任务状态查询:获取任务执行状态
- 任务输出:实时获取任务日志
- 任务参数:调试模式、干运行等选项
7. 集成功能
Semaphore 提供了强大的集成能力:
- 集成匹配器:基于请求体或头部的条件匹配
- 值提取器:从响应中提取特定值并存储为变量
- 集成类型:支持 JSON、XML 等多种数据格式处理
数据结构详解
用户数据结构
{
"id": 1,
"name": "Admin User",
"username": "admin",
"email": "admin@example.com",
"created": "2023-01-01T00:00:00Z",
"alert": true,
"admin": true,
"external": false
}
项目数据结构
{
"id": 1,
"name": "Production",
"created": "2023-01-01T00:00:00Z",
"alert": true,
"alert_chat": "#alerts",
"max_parallel_tasks": 5,
"type": "ansible"
}
任务模板数据结构
{
"id": 1,
"project_id": 1,
"inventory_id": 1,
"repository_id": 1,
"environment_id": 1,
"view_id": 1,
"name": "Deploy Web",
"playbook": "deploy.yml",
"arguments": "[]",
"description": "Web application deployment",
"allow_override_args_in_task": true,
"suppress_success_alerts": false,
"type": "deploy",
"autorun": false
}
最佳实践
- 认证流程:先获取 API 令牌,再在后续请求的 Authorization 头中使用
- 错误处理:检查 HTTP 状态码和响应体中的错误信息
- 批量操作:合理使用项目备份/恢复接口进行批量配置
- 任务监控:结合 Webhook 和任务状态接口实现自动化监控
- 权限控制:遵循最小权限原则分配用户角色
总结
Ansible Semaphore 的 API 设计完善,覆盖了从用户管理到任务执行的全生命周期。通过合理使用这些接口,开发者可以实现 Semaphore 与现有系统的深度集成,构建自动化程度更高的 Ansible 任务管理平台。本文详细介绍了各模块的功能和数据结构,可作为开发时的参考指南。