Semaphore v2.17 では、インフラ自動化と DevOps チーム向けに新機能と改善を導入しました。このリリースは、開発者体験の向上と Infrastructure as Code のワークフローの効率化に焦点を当てています。
主な新機能の概要
-
TOTP アプリでのカスタム発行者名
TOTP(Time-based One-Time Password)認証アプリに Semaphore を登録する際、表示される発行者名をカスタマイズできるようになりました。これにより、複数の 2FA トークンを管理しているユーザーでも Semaphore アカウントを判別しやすくなります。
詳細 » -
環境変数からのシークレット読み取り
シークレットを環境変数に紐付けられるようになりました。
詳細 » -
一度だけ実行されるスケジュールタスク
cron スケジュールだけでなく、特定の日時に一度だけ実行されるタスクをスケジュールできるようになりました。
詳細 » -
ビューのカスタマイズ強化
テンプレートのビューをより柔軟にカスタマイズできるようになりました。
詳細 » -
全タスク停止
「Stop all」ボタンでテンプレートに対して実行中のすべてのタスクを一括で停止できます。ロールアウトを素早く中断したい場合や誤って開始したジョブをキャンセルしたい場合に便利です。
詳細 » -
Syslog サーバー対応
Semaphore のログを外部の syslog サーバーへ送信できるようになり、ログ収集の集中化や既存の監視・アラートパイプラインとの統合が容易になりました。
詳細 » -
データベースマイグレーションのロールバック
データベースマイグレーションをロールバックできるようになり、必要に応じて Semaphore を安全にダウングレードしやすくなりました。
詳細 » -
アンケート変数、CLI 引数などのドラッグ&ドロップ
アンケート変数や CLI 引数などのリスト項目をドラッグ&ドロップで並べ替えられるようになりました。
詳細 » -
CLI 経由のプロジェクトエクスポート/インポート
コマンドラインからプロジェクトをエクスポート/インポートできるようになり、バックアップ、環境間の移行、反復構築が簡単になります。
詳細 » -
BoltDB から SQLite/MySQL/Postgres への移行用 CLI ツール
BoltDB から SQLite、MySQL、Postgres へデータを移行するための新しい CLI マイグレータが提供されます。BoltDB は非推奨となっており、v3.0 で削除される予定です。
詳細 » -
Devolutions Server サポート(Enterprise)
Enterprise インストールで Devolutions Server をシークレットバックエンドとして統合できるようになりました(HashiCorp Vault と同様)。
詳細 » -
カスタムロールと拡張 RBAC(Enterprise)
組織のアクセスモデルに合わせて権限を細かく定義できるカスタムロールを作成できます。
詳細 » -
Active-active 高可用性(Enterprise)
ロードバランサー配下で複数の Semaphore インスタンスを同時アクティブに稼働させ、可用性を高められます(primary/standby なし)。
詳細 » -
ログの改善
ログにより詳細なコンテキストが含まれるようになりました。
詳細 » -
環境変数経由のサブスクリプションキー(PRO)
PRO のサブスクリプションキーを環境変数で提供できるようになり、コンテナ化されたデプロイや自動化された展開に便利です。
詳細 »
機能
TOTP アプリでのカスタム発行者名
Semaphore v2.17 では、TOTP(Time-based One-Time Password)認証アプリに表示される発行者名をカスタマイズするオプションが追加されました。
目的:
発行者名は、認証アプリ内でどのアカウントが Semaphore に対応するものかを識別するのに役立ちます。複数の組織や環境のアカウントを管理している場合に特に有用です。
設定方法:
次の 2 つの方法で発行者名を設定できます。
-
環境変数
Semaphore 起動時に環境変数
SEMAPHORE_TOTP_ISSUERを希望する発行者名に設定します。例(Docker Compose):
environment: - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore例(スタンドアロン):
SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server -
設定ファイル
config.jsonのauthセクション内に次のオプションを設定します:{ "auth": { "totp": { "issuer": "MyCompany Semaphore" } } }
優先順:
環境変数と設定ファイルの両方が設定されている場合、環境変数 (SEMAPHORE_TOTP_ISSUER) が優先されます。
デフォルト値:
設定されていない場合、デフォルトの発行者名は Semaphore です。
結果:
ユーザーが認証アプリに Semaphore の TOTP アカウントを追加すると、設定した発行者名が表示され、複数アカウントの判別が容易になります。
利用可能な環境変数の詳細については、インストールの環境変数ドキュメント を参照してください。
一度だけ実行されるスケジュールタスク
Semaphore では cron スケジュールに加えて、特定の日時に一度だけ実行される「ワンタイムスケジュール」をサポートするようになりました。特定の日付と時刻に一回だけジョブを実行したい場合に使用します。
利用例:
- 承認済みの変更ウインドウ中にメンテナンスタスクを実行する
- 単発のロールアウトやバックフィルジョブを開始する
ビューのカスタマイズ強化
テンプレートビューがより柔軟にカスタマイズできるようになり、表示内容や配置をワークフローに合わせて調整しやすくなりました。
-
All タブをバーの任意の場所へ移動できます。
-
通常のプロジェクトユーザーに対して All タブを完全に非表示にできます。
-
特定のビューのデフォルトのテンプレート並び順を変更できます。
代表的な改善点:
- テンプレート関連情報のより良い整理
- ビュー内コンテンツの配置に対する柔軟性の向上
全タスク停止
テンプレートに対して実行中のすべてのタスクを一度に停止できるようになりました。ロールアウトを素早く中断したい場合や、誤って開始したジョブをキャンセルする際に有用です。
Syslog サーバー対応
Semaphore のログを外部の syslog サーバーに転送できるようになり、ログ収集の集中化や既存の監視・アラートパイプラインとの統合が容易になります。
config.json:
{
"syslog": {
"enabled": true,
"network": "udp",
"address": "localhost:514",
"tag": "semaphore"
}
}
環境変数:
export SEMAPHORE_SYSLOG_ENABLED=True
export SEMAPHORE_SYSLOG_NETWORK=udp
export SEMAPHORE_SYSLOG_ADDRESS=localhost:514
export SEMAPHORE_SYSLOG_TAG=semaphore
データベースマイグレーションのロールバック
データベースマイグレーションをロールバックできるようになりました。これによりアップグレード時の問題からの回復が容易になり、必要に応じたダウングレードが簡素化されます。
semaphore migrate --undo-to 2.16
アンケート変数、CLI 引数などのドラッグ&ドロップ
アンケート変数や CLI 引数などのリスト項目を ドラッグ&ドロップで並べ替えられるようになり、テンプレートの保守とレビューがしやすくなりました。
CLI 経由のプロジェクトエクスポート/インポート
Semaphore はプロジェクトの自動インポートに対応しました。
Docker コンテナでは、環境変数 SEMAPHORE_IMPORT_PROJECT_FILE と SEMAPHORE_IMPORT_PROJECT_NAME を受け付けます。
CLI でプロジェクトをインポートする必要がある場合は、次のコマンドを使用できます:
semaphore project import --file /path/to/the/backup.json --project-name "Demo project"
プロジェクト名を指定しない場合、バックアップのメタデータに含まれるプロジェクト名が使用されます。
ディレクトリからすべてのプロジェクトをインポートするには、次のコマンドを使用します:
semaphore project import --dir /path/to/the/dir
プロジェクトをエクスポートするには、次のコマンドを使用できます:
semaphore project export --project-name "Demo project" --file /path/to/the/backup.json
すべてのプロジェクトをディレクトリにエクスポートする場合:
semaphore project export --dir /path/to/the/dir
このコマンドを cron と組み合わせることで、プロジェクトの自動バックアップを実装できます。
BoltDB から SQLite/MySQL/Postgres への移行用 CLI ツール
新しい CLI マイグレータにより、Semaphore データを BoltDB から SQLite、MySQL、Postgres へ移行できます。BoltDB は非推奨となっており、v3.0 で削除される予定です。
semaphore migrate --from-boltdb /path/to/boltdb/file
Devolutions Server サポート(Enterprise)
Enterprise 環境は Devolutions Server をシークレットバックエンドとして統合できるようになりました(HashiCorp Vault と同様の使い方が可能です)。
カスタムロールと拡張 RBAC(Enterprise)
Semaphore UI はプロジェクトレベル/グローバルレベルのカスタムロールをサポートし、タスクとテンプレートに対するきめ細かなアクセス制御が可能になりました。RBAC は Semaphore リソース全体でより粒度の高い制御へ拡張され、最小権限の原則をより正確に適用できるようになります。
Enterprise ユーザーは、組織のアクセス要件に合わせた権限を持つ カスタムロールを定義できます。
プロジェクトオーナーやマネージャーは、これらのロールを特定のテンプレートに割り当て、タスクの実行・閲覧・管理のための権限を付与できます。
Active-active 高可用性(Enterprise)
標準的な単一ノード構成では、1 つの Semaphore プロセスがすべてを担当します。Web UI の提供、スケジュールジョブの実行、タスクの実行、ブラウザへのライブ更新のプッシュなどです。このプロセスが停止すると、すべてが止まります。
Active-active HA では、ロードバランサー配下で複数の同一 Semaphore インスタンスを実行します。すべてが同時に完全アクティブであり、「primary」や「standby」は存在しません。どのノードでも任意のリクエストを処理し、任意のタスクを実行し、任意のスケジュールを発火できます。共有 Redis インスタンスを通じて調整し、重複実行などを防ぎます。
全インスタンスは同じ 2 つのバックエンドに接続します:
- データベース(Postgres または MySQL) — 永続データの単一の真実の源: プロジェクト、テンプレート、スケジュール、タスク履歴、ユーザーなど
- Redis — 調整レイヤー。Redis は 3 つの目的で使われます:
- 分散ロック — 2 ノードが同じものを実行しないようにする
- Pub/Sub メッセージング — ノード間でリアルタイムイベントを中継する
- 共有タスクキュー状態 — すべてのノードが同じキュー状態を見られるようにする
{
"ha": {
"enabled": true,
"node_id": "node1",
"redis": {
"addr": "localhost:6379"
}
}
}
ログの改善
ログのコンテキストと明確さが向上し、失敗のトラブルシュートや、実行中に何が起きたかを把握しやすくなりました。
環境変数経由のサブスクリプションキー(PRO)
PRO のサブスクリプションキーを環境変数で提供できるようになりました。コンテナ化されたデプロイや CI/CD 主導のロールアウトで便利です。