メインコンテンツまでスキップ

前提条件

Semaphore 自体の必須要件はごくわずかです。準備すべきもののほとんどは、実行される自動化処理と、その周囲の環境に属します。インストール の前にこのページをひととおり進めておけば、インストール自体は数分で終わります。

ホスト

Semaphore は単一のバイナリとコンテナーイメージとして提供され、Linux、macOS、Windows で動作します。パッケージ、Docker イメージ、Helm チャートが対象としているのは Linux であり、ほとんどのデプロイでも Linux が使われています。

このサービス自体は軽量です。Web インターフェイスを提供する Go のプロセスにすぎません。実際にメモリーと CPU を消費するのは、同じマシン上で並列に動く Ansible、Terraform、そしてあなたのスクリプトです。ホストのサイズは Semaphore ではなく作業内容に合わせて決め、プロジェクト設定の 並列タスクの最大数 で同時実行数を制限してください。あるいは実行を ランナー へ移し、そちらのサイズを決めてください。

永続ストレージは 2 か所に必要です。データベースと、リポジトリがクローンされる tmp_path のディレクトリです。Docker ではボリュームがそれにあたり、ボリュームのないコンテナーは再作成時にデータを失います。

データベース

後から移行するとデータの移送が必要になるため、インストール前に 1 つ選んでください。

エンジン選ぶ場面
SQLiteサーバー 1 台、チーム 1 つ。同梱されており、設定は不要で、既定です。
PostgreSQL または MySQL/MariaDBこのサービスがごく少数を超える人にとって重要である場合、既存のデータベース基盤でバックアップや監視を行いたい場合、または複数ノードでの運用を計画している場合。

高可用性 には PostgreSQL または MySQL に加えて Redis が必要で、SQLite は使えません。HA が計画にあるなら、最初から PostgreSQL で始めてください。

インストール前に、データベースとそれに対する権限を持つユーザーを作成してください。テーブルは Semaphore が初回起動時とアップグレードのたびに自分で作成します。

ネットワークアクセス

Semaphore が到達する必要のある先目的
自分の Git リモートテンプレートが指すリポジトリのクローン。
自動化の対象となるホストとクラウド API実際の作業の実行。
ID プロバイダー(使用する場合)LDAP または OpenID Connect によるサインイン。
通知チャネル電子メール、Telegram、Slack など。

変更しない限り、ユーザーはポート 3000 で Web インターフェイスに接続します。誰かがサインインする前に、その前段に TLS を配置してください。セッションと API トークンがその経路を通ります。

ランナーがタスクを実行する場合は、ランナー のほうが Git リモートと対象ホストへのアクセスを必要とし、さらに Semaphore サーバーへの外向きアクセスを必要とします。サーバーがランナーへ接続することは決してありません。

自動化ツール

タスクが実行するものは、それが実行される場所、すなわちサーバー、ランナー、またはエグゼキューターが使うコンテナーイメージにインストールされている必要があります。

  • Docker イメージには Ansible、Terraform、OpenTofu と一般的な依存関係が同梱されています。追加の Python パッケージはマウントした requirements.txt に記述します。追加の Python 依存関係のインストール を参照してください。
  • パッケージまたはバイナリによるインストールでは Semaphore だけが入ります。Git、Python、Ansible、および必要なコレクションやプロバイダーは自分でインストールしてください。手動インストール を参照してください。

テンプレートを作成する前に、プレイブックや構成が、Semaphore の実行ユーザーとしてそのマシンのシェルから動作することを確認してください。「ローカルでは動く」という報告のほぼすべては、コレクション、プロバイダー、Python パッケージの不足に行き着きます。

用意しておく認証情報

そうしないと 1 つずつ作業が中断するため、最初のテンプレートを作る前に次のものを集めておいてください。

  • Semaphore がクローンする各リポジトリの デプロイキーまたはトークン
  • 管理対象ホストへ接続するための SSH キーまたはログイン情報
  • Terraform やモジュールが必要とする クラウドの認証情報
  • プレイブックが暗号化されている場合は Ansible Vault のパスワード

これらはすべてリポジトリではなく キーストア に置くべきものです。

先に決めておくべきこと

次の 3 つの選択は、いま決めれば安価で、後回しにすると高くつきます。

  1. 上記の データベースエンジン
  2. ユーザーが使う URL。 web_host として設定します。リバースプロキシ、OIDC のリダイレクト URI、Webhook の宛先、通知内のリンクは、いずれもこれに由来します。
  3. access_key_encryption インストール時に生成し、別途バックアップし、安易にローテーションしないでください。保存されるすべてのシークレットがこれで暗号化されます。
head -c32 /dev/urandom | base64

次のステップ

  • インストール — 方法を選んでインストールする。
  • 設定 — オプションの指定方法と、その意味。
  • はじめ方 — インストール済みのサーバーから最初のタスクまで。