跳到主要内容

什么是 Semaphore

Semaphore UI 是一个自托管的 Web 界面和 REST API,用来运行你已经拥有的自动化内容。 你把它指向一个存放 Ansible playbook、Terraform 配置或 shell 脚本的 Git 仓库, 告诉它使用哪些凭据和主机,它就会成为团队运行这些自动化、保存所需密钥、 并记录每一次运行的统一入口。

你可以单独运行任务,也可以使用 Workflows(Pro)将它们组合成一条流水线, 串联构建、测试、部署和基础设施自动化。

Semaphore 不会取代 Ansible、Terraform 或你的脚本。它只是运行它们——在服务器上运行, 而不是在某个人的笔记本电脑上。

它解决的问题

自动化通常始于一台工作站。某位工程师拥有 playbook、清单、SSH 密钥,并安装了合适版本的 Ansible。这在第二个人需要运行同样的东西之前都没问题,或者直到有人问起上周二某台主机上 到底改了什么。

Semaphore 把运行搬到一台共享服务器上,并补上了缺失的部分:

缺失的部分Semaphore 提供的能力
每个人都需要安装工具链只有一台服务器(或一个运行器)需要安装;用户只需要浏览器。
凭据在各台笔记本之间来回复制加密的密钥库把密钥交给运行过程,而不会交给用户。
没有谁运行了什么的记录每个任务都保留其输出、退出状态、用户和时间。
不该为了跑一个 playbook 就给出 root 权限角色决定谁可以运行、编辑或只能查看。
只有有人记得时才会执行定时计划Webhook 和 API 调用都能触发它们。

它适合哪些人

  • 基础设施与平台团队:已经在使用 Ansible 或 Terraform,希望同事能够运行它们, 而不必分发生产环境凭据。
  • 构建 CI/CD 流水线的团队:希望通过工作流连接构建、测试和部署任务, 同时运行定时和按需的运维作业。
  • 已有 CI/CD 平台的团队:希望把运维类运行——重启、部署、证书续期——挪出构建系统, 并且让那些不阅读流水线 YAML 的人也能看到。

Semaphore 是自托管的。它没有 SaaS 版本:你在自己的基础设施上运行二进制文件或容器, 你的密钥永远不会离开它。

它能运行什么

每个任务模板都会选择一种应用:

任务可以在服务器本身上运行,也可以在靠近被管理系统部署的运行器上运行。

Workflows(Pro)通过可视化编辑器将任务模板连接成流水线。 每个步骤都可以运行不同的应用:例如,使用 shell 脚本构建和测试源代码, 使用 Terraform 配置基础设施,然后使用 Ansible 部署。你可以添加审批步骤、 定时暂停,以及在成功或失败时执行的分支。满足条件后,Semaphore 会自动启动后续任务。

什么时候不该使用它

了解它的边界可以省下以后的时间。

  • 取代 Ansible 或 Terraform。 Semaphore 没有自己的执行引擎。如果你的 playbook 在 shell 里跑不通,那么在 Semaphore 里同样跑不通。
  • 充当 CMDB。 清单是你的运行所需要的清单, 而不是关于你整套资产的可信数据源。请用动态清单从真正的数据源生成它们。
  • 成为你组织的密钥管理系统。 密钥在静态存储时是加密的,设计目的是供任务使用, 而不是供人读回。如果你已经在运行 HashiCorp Vault 或其他存储, 请连接它,而不是把密钥复制进来。
  • 作为不允许任何停机的单节点服务运行。 多个活动节点需要高可用, 这是 Enterprise 功能,并且需要 PostgreSQL 或 MySQL 以及 Redis。

下一步

  • 架构 —— 进程、数据库,以及任务在哪里执行。
  • 核心概念 —— 界面期望你了解的十个词。
  • 快速上手 —— 安装它并运行点什么。