前置条件
Semaphore 自身的硬性要求很少。你需要准备的大部分东西,属于它将要运行的自动化内容 以及它周围的环境。在进行安装之前先过一遍本页, 安装本身只需要几分钟。
一台主机
Semaphore 以单个二进制文件和容器镜像的形式发布,可在 Linux、 macOS 和 Windows 上运行。软件包、Docker 镜像和 Helm chart 面向的是 Linux, 大多数部署也都使用它。
该服务本身很轻量:它只是一个提供 Web 界面的 Go 进程。真正消耗内存和 CPU 的是 Ansible、Terraform 以及你在同一台机器上并行运行的脚本。请按工作负载而不是按 Semaphore 来规划主机规格,并用项目设置最大并行任务数限制并发—— 或者把执行 挪到运行器上,改为按运行器规划规格。
要为两处准备持久化存储:数据库,以及 tmp_path 指向的、用于克隆仓库的目录。
在 Docker 中这意味着一个卷;没有卷的容器在重建时会丢失数据。
一个数据库
请在安装前做出选择,因为之后更换意味着要迁移数据。
| 引擎 | 适用场景 |
|---|---|
| SQLite | 一台服务器、一个团队。已内置,无需任何配置,是默认选项。 |
| PostgreSQL 或 MySQL/MariaDB | 该服务对多于少数几个人很重要、你希望沿用现有数据库平台的备份和监控,或者你计划运行多个节点。 |
高可用需要 PostgreSQL 或 MySQL 以及 Redis, 不能使用 SQLite。如果 HA 在你的规划中,请一开始就用 PostgreSQL。
安装前先创建好数据库和对它拥有权限的用户;Semaphore 会在首次启动时 以及每次升级时创建自己的表。
网络访问
| Semaphore 必须能访问 | 用于 |
|---|---|
| 你的 Git 远程仓库 | 克隆模板所指向的仓库。 |
| 你要自动化的主机和云 API | 真正执行工作。 |
| 你的身份提供方(如果使用) | LDAP 或 OpenID Connect 登录。 |
| 你的通知渠道 | 电子邮件、Telegram、Slack 等等。 |
除非你更改端口,用户通过 3000 端口访问 Web 界面。请在任何人登录之前,
在它前面加上 TLS:会话和 API 令牌都经由它传输。
如果由运行器执行任务,那么需要访问 Git 远程仓库和目标主机的是它, 并且它需要到 Semaphore 服务器的出站访问权限。服务器从不主动连接运行器。
自动化工具
任务运行的东西,必须安装在它实际运行的地方——服务器上、运行器上, 或者执行器所使用的容器镜像中。
- Docker 镜像自带 Ansible、Terraform、OpenTofu 以及常用依赖。
额外的 Python 包放在挂载的
requirements.txt中;参见 安装额外的 Python 依赖。 - 通过软件包或二进制文件安装时只会得到 Semaphore 本身。请自行安装 Git、Python、Ansible 以及所需的 collection 或 provider;参见 手动安装。
在用某个 playbook 或配置创建模板之前,先确认它能以 Semaphore 所用的用户身份 在那台机器的 shell 中运行。几乎每一条"本地能跑"的反馈,最终都归结为缺少某个 collection、provider 或 Python 包。