Semaphore v2.18 では、インフラ自動化と DevOps チーム向けの新機能と改善が導入されました。このリリースでは、開発者体験の向上と Infrastructure as Code ワークフローの効率化に重点を置いています。
クラウドシークレットマネージャー連携
クラウドプラットフォームを利用する組織には、認証情報の重複を避け、既存のローテーションポリシーを活用するために、実行時にクラウドプロバイダーのシークレット管理サービスから直接シークレットを取得する手段が必要です。この機能では、AWS Secrets Manager および Azure Key Vault とのネイティブ連携を Enterprise 限定の機能として追加します。

Enterprise
- AWS Secrets Manager 連携 — IAM ロール、アクセスキー、または AssumeRole を使用して、実行時に AWS Secrets Manager からシークレットを取得します。フィールド抽出に対応した JSON 構造のシークレットと自動ローテーションをサポートします。 (#2248)
- Azure Key Vault 連携 — マネージド ID またはサービスプリンシパル認証を使用して、実行時に Azure Key Vault からシークレットを取得します。シークレット、キー、証明書と自動ローテーションをサポートします。 (#2248, #3170)
リモートストレージからシークレットを読み込む
Semaphore は、HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、Devolutions Server からシークレットを自動的にキーストアへインポートし、同期を維持できるようになりました。

シークレットストレージとして HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、または Devolutions Server を指定し、インポートを制御する同期パスを 1 つ以上定義します:
- パス — リモートストアのどのフォルダー/サブツリーからインポートするか。
- プレフィックス — 生成されるすべてのキー名の先頭に付加される文字列で、インポートを名前空間で分けられます (例: prod-)。
- 区切り文字 — ネストされたシークレットの場所を、読みやすい単一のキー名にフラット化する方法 (プロバイダーごとに適切なデフォルトが適用されます)。
Semaphore は適切なキータイプ (SSH キー、ログイン/パスワード、またはシークレット文字列) を自動的に検出します。インポートは 今すぐ同期 によるオンデマンド実行、または分単位で設定するバックグラウンドスケジュールで実行されます。各同期ではミラーを完全に整合させ、ソースに合わせてキーを追加・更新・削除しますが、手動で作成したキーには影響しません。高可用性構成では、重複インポートを避けるため、スケジュール同期は単一ノードでのみ実行されます。
同期パスは、キーストア レベル (プロジェクト共有キー) と 変数グループ レベル (環境変数) の両方で機能します。

テンプレートごとに複数の変数グループ

Semaphore は、各タスクテンプレートに複数の変数グループ (Environment) を紐付けられるようになりました。これまでは 1 つの変数グループしか紐付けられなかったため、複数のテンプレートで共通の設定を共有する場合、変数をグループ間で重複させるか、すべてを含む巨大な変数グループを作る必要がありました。テンプレートは複数の変数グループを組み合わせられるようになり、このリリースでは変数処理に関する多数のバグ (シリアライズ、優先順位、伝播、サーベイ変数のライフサイクル) も修正されています。
galaxy インストールのスキップ
プレイブックを実行する前に、Semaphore は requirements.yml に宣言されたロールとコレクションをダウンロードするために ansible-galaxy install ステップを実行します。多くの環境ではこのステップは不要です。依存関係がすでにランナーイメージに組み込まれていたり、リポジトリにベンダリングされていたり、内部ミラーから提供されていたりするためです。タスクごとに実行してもレイテンシが増えるだけであり、インターネットにアクセスできないエアギャップ環境では完全に失敗します。
このリリースでは、タスクテンプレート設定に galaxy インストールのスキップ オプションが追加されました。有効にすると、Semaphore は ansible-galaxy install の準備ステップをバイパスし、直接プレイブックの実行に進みます。これによりタスクの起動が高速化され、実行時の Ansible Galaxy および Git アクセスへの強い依存が取り除かれるため、オフラインや事前プロビジョニングされたランナーで特に有用です。

