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

前提条件

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

次のステップ​

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