Semaphore UIとRundeck:Ansibleとランブック自動化の比較

Denis GukovSemaphore UI 創業者兼 CTO
読了時間:約17分

RundeckとSemaphore UIは、繰り返す運用作業を、チームが起動、定期実行、確認できるジョブにします。違いは、ジョブの組み立て方、ホストの表現方法、アクセスの委任方法にあります。本記事ではRundeck 6.2.1とSemaphore UI 2.20.0を比較し、商用機能を明示します。

この記事について AI に相談

概要

再起動、データベースのバックアップ、新しいテスト環境の作成は、その手順が1人のエンジニアのノートPCにしかないと、共有が難しくなります。同僚に必要なのは、適切な対象、認証情報、入力を備えた繰り返し実行できる操作と、確認できる結果です。RundeckとSemaphore UIはその共有の場を提供しますが、作業の準備方法が異なります。

Rundeckは、コマンド、プラグインのアクション、他のジョブへの参照から運用ランブックを組み立てます。マシンはノードとして表され、運用担当者はフィルターで選択し、管理者はアクセス制御ポリシーで管理できます。内蔵のAnsible連携によって、プレイブックとインベントリもこの仕組みに取り込めます。PagerDuty Runbook Automationは、SaaSとセルフホストの提供形態で商用機能を追加します。

Semaphore UIは、Ansible、Terraform/OpenTofu、Terragrunt、Bash、PowerShell、Pythonの再利用可能なテンプレートを起点とします。プロジェクトがリポジトリ、インベントリ、認証情報、変数をまとめます。エンジニアはデプロイや保守の操作を準備し、同僚に起動フォームを提供し、同じテンプレートを定期実行できます。プロビジョニング、構成、チェックを順番に実行する必要がある場合は、ワークフローでそれらの操作を接続します。

1つのプロジェクトにある複数の自動化ツール向けSemaphore UIタスクテンプレート。
Semaphore UI. 準備済みのAnsible、Infrastructure as Code、コマンドラインの操作を、プロジェクトのタスク一覧で共有します。
個々のノードでの実行状態を表示するRundeckのジョブ結果。
Rundeck. ジョブは個々のノードの結果を報告します。公式ドキュメントの例。 出典

主要項目の比較

どちらも手動実行と定期ジョブに対応します。主な違いは、既存の自動化を共有操作にする方法、対象ホストの表現方法、Infrastructure as Codeの管理方法にあります。

RundeckとSemaphore UIの主な特徴
比較項目 Semaphore UI Rundeck
自動化ツール Ansible, Terraform/OpenTofu, Terragrunt, Bash, PowerShell, Python コマンド、スクリプト、内蔵のAnsible連携、プラグイン
インストール バイナリ、ネイティブパッケージ、Docker、Kubernetes ネイティブパッケージ、実行可能なWAR、Docker、Javaランタイム
ホスティング セルフホスト セルフホストのCommunity、商用のSaaSまたはセルフホスト
実行 サーバーまたはランナー、任意でタスク用コンテナ サーバーとリモートノード、商用のEnterprise Runner
ジョブの設定 ツール別のテンプレート、入力フォーム、変数グループ 複数ステップのジョブ、オプション、ノードフィルター、プラグイン
インベントリ管理 静的インベントリ、Git上のインベントリ、Ansibleの検出プラグイン ノードレコード、リソースモデルのソース、ノードフィルター
認証情報 再利用可能なキーストアのエントリー、外部シークレット管理との連携 再利用可能なKey Storageのエントリー、外部ストレージ用プラグイン
ワークフロー テンプレート間のビジュアルな接続 ステップ、ジョブ参照、ワークフローの実行方式、エラーハンドラー
アクセス制御 プロジェクトロール、Enterpriseのカスタムロールとテンプレート権限 プロジェクト、ジョブ、ノード、キーストレージのACLポリシー
ライセンス MITライセンスのCommunity、商用のProとEnterprise Apache 2.0ライセンスのCommunity、商用のRunbook Automation

既存のAnsibleプレイブックがあるチーム向けに、Semaphore UIはプレイブック、インベントリ、認証情報、起動時の入力をツール別テンプレートにまとめ、再利用可能なプロジェクトリソースで支えます。同じプロジェクトにTerraform/OpenTofuのプロビジョニングと、その後のホスト保守を置き、必要に応じてProのステートバックエンドを使えます。Rundeckも内蔵の連携でプレイブック全体とAnsibleインベントリを再利用できます。マシンの選択とノード単位のアクセス制御が日常業務に含まれる場合は、Rundeckのノードレコード、フィルター、ACLが特に役立ちます。

機能比較

運用サービスは、ジョブの準備、対象環境への到達、入力の収集、わかりやすい結果の提示という手順全体を支える必要があります。これらを見ると、実行可能なツールの一覧だけではわからない違いが見えてきます。

インストールとセットアップ

自動化サービスと、そのコマンドを実行するマシンは同じシステムである必要はありません。導入方法の選択は、初期設定とプライベート環境へのアクセスの両方に影響します。

対応一部対応非対応
インストールとセットアップ: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
セルフホストでの導入 対応 対応
スタンドアロンのネイティブバイナリ 対応 非対応Javaランタイムが必要
ネイティブ Linux パッケージ 対応 対応
Docker デプロイ 対応 対応
ネイティブ Windows サーバー 対応 対応Javaランタイムが必要
高可用性 対応Enterprise 対応Runbook Automation

Rundeckは、Javaランタイムと、ネイティブパッケージ、実行可能なWAR、Dockerを使い、Kubernetesなしの一般的なサーバーで動作します。初期設定用にH2が同梱されています。H2は本番環境ではサポートされないため、本番では対応する外部データベースを設定します。商用のRunbook Automationはマネージドサービスとしても利用できます。

Semaphore UIは、スタンドアロンバイナリ、ネイティブパッケージ、Docker、Kubernetesによる導入に対応します。運用チームはJVMを追加せず、既存ホストにサービスを配置して自動化リポジトリを接続できます。少数の定期手順を共有する画面が欲しい場合にも、大きなチームで自動化をセルフホストしたい場合にも有効です。どちらもサーバーをWindowsで実行でき、RundeckではJavaが必要です。Ansibleの実行にはLinux、WSL、Linuxランナーやコンテナなど、対応する制御環境が必要です。WindowsネイティブのWebサーバーがあることは、WindowsがAnsibleのネイティブな制御ノードになることを意味しません。

自動化ツール

チームは構成管理、プロビジョニング、小規模な保守プログラムを組み合わせることがよくあります。どちらもこれらのツールを実行できますが、必要なジョブ設定の量が異なります。

対応一部対応非対応
自動化ツール: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
Ansible Playbook 対応タスクテンプレート 対応内蔵のAnsible連携
Terraform/OpenTofu 対応タスクテンプレート 対応コマンドまたはスクリプトのステップ
Terragrunt 対応タスクテンプレート 対応コマンドまたはスクリプトのステップ
Bash 対応タスクテンプレート 対応コマンドまたはスクリプトのステップ
PowerShell 対応タスクテンプレート 対応コマンドまたはスクリプトのステップ
Python 対応タスクテンプレート 対応コマンドまたはスクリプトのステップ
内蔵のTerraformステートバックエンド 対応ProHTTPバックエンドとステート履歴 非対応Terraformに設定したバックエンドを使用

Rundeckの内蔵Ansible連携は、プレイブックとモジュールを実行し、Ansibleインベントリをインポートできます。そのため、既存のプレイブックを個別のコマンドステップに書き直す必要はありません。必要なインタープリターがあれば、コマンドやスクリプトのステップでBash、PowerShell、Pythonも実行できます。

Semaphore UIは、対応する各ツールに専用のテンプレート設定を用意しています。Ansibleの操作ではプレイブックとインベントリを選択します。Terraform/OpenTofuとTerragruntのテンプレートはインフラ設定とワークスペースを扱い、Bash、PowerShell、Pythonのテンプレートは対応するファイルを直接実行します。Ansible中心のチームは、プロビジョニングと補助ツールをホスト操作と同じ画面にまとめられます。

テスト環境の作成依頼を考えると、利点がわかります。Terraform/OpenTofuでインフラを作成し、Ansibleでホストを構成し、Pythonでアプリケーションのエンドポイントを確認できます。Semaphore UIの各テンプレートはツール別の設定を保持し、共有するリポジトリ、インベントリ、変数グループのオブジェクトを参照します。Rundeckは同じ手順をワークフローステップ、プラグイン、ジョブ参照で表現します。違いは自動化に使う言語ではなく、その設定をどう準備し、再利用するかにあります。

Terraform/OpenTofuの共有ステートも必要なチーム向けに、Semaphore UI Proはワークスペース、バージョン履歴、画面での管理を備えたHTTPバックエンドを提供します。既存の外部バックエンドも引き続き使えます。Rundeckは、インフラコードに設定されたバックエンドを使ってTerraformを実行できます。RundeckのTerraformプロバイダーはRundeck自体の設定を管理するものであり、インフラジョブのステートを保存する機能とは目的が異なります。

保存した正確なTerraformプランを承認して適用する必要がある場合は、プランの保存と再利用を明示的に設定します。Semaphore UIの標準実行はplanとapplyを別々に行い、上書きしない限り標準コマンドに-lock=falseを使用します。ステートバックエンドを提供しても、これらのタスクコマンド設定は変わりません。

設定とスケジュール

再利用可能な操作には、保存した定義、共通設定、起動フォームが必要です。定期実行でも、担当者にコマンドを再構成させず、準備済みの内容を再利用できることが重要です。

対応一部対応非対応
設定とスケジュール: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
自動化リポジトリの設定 対応テンプレートで共有するリポジトリオブジェクト 一部対応ジョブ定義にはSCM、コードにはGitステップ
ジョブ間の共通設定 対応名前付きの変数グループ 対応プロジェクトのグローバル変数とジョブオプション
起動フォーム 対応 対応
繰り返しスケジュール 対応 対応

Rundeckは、保存した手順をジョブと呼びます。ワークフローのステップと、起動時の入力を集めるオプションを組み合わせます。オプションには必須値、検証、外部URLから取得する選択肢を設定できます。ランブック自体が、ノードへの操作やプラグインのステップを順序立てて定義する場合に適しています。

Semaphore UIのTask Template(タスクテンプレート)は、1つの自動化操作を再利用するための設定です。Ansibleでサービスを再起動する場合、エンジニアはリポジトリ、プレイブック、インベントリ、認証情報を選び、共通設定の変数グループを関連付けます。入力フォームで、同僚にサービス名や変更の参照番号を尋ねることもできます。次回の起動でもこの準備を再利用するため、同僚はコマンドラインを組み立て直す代わりに、操作そのものを扱えます。

リポジトリオブジェクトは、Git URL、既定のブランチ、アクセス認証情報を複数のテンプレート向けに1か所で保持します。プレイブックのリポジトリを一度接続すれば、バックアップ、デプロイ、証明書の更新に再利用できます。RundeckのGit SCM連携は、ジョブ定義のバージョン管理とインポートを行います。ジョブが使う自動化コードの取得は、別のステップまたは連携機能です。

名前付きの変数グループによって、Semaphore UIのテンプレートで環境設定のまとまりを再利用できます。地域ごとのエンドポイントやドメイン設定をまとめて管理し、それらを使う操作に関連付けられます。Rundeckでもプロジェクトのグローバル変数で値を共有し、ジョブのオプションで実行固有の値を収集できます。Semaphore UIは、グループ化と割り当てをテンプレート設定画面で明示します。

同じ仕組みは定期作業にも使えます。データベースのバックアップ用プレイブックを設定済みの入力でcronスケジュールから実行し、保守時間の前には担当者が手動実行することもできます。証明書の確認、更新、パッチ適用は、同じインベントリに対して個別のテンプレートを使えます。どちらも定期スケジュールに対応するため、違いは保存したジョブと周辺設定がチームの既存の自動化にどう合うかです。

インベントリ

対応一部対応非対応
インベントリ: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
Ansibleインベントリの再利用 対応インベントリ定義を直接利用 対応Ansibleインベントリの利用とノードのインポート
ホストの動的検出 対応Ansibleインベントリプラグイン 対応リソースモデルのソース
対象ホストの選択 対応インベントリグループとAnsibleのホストlimit 対応ノードフィルター、タグ、属性

Rundeckはマシンをノードとして表し、リソースモデルのソースやプラグインから登録します。運用担当者は、ジョブの起動時に属性やタグでノードを絞り込めます。ノードACLと組み合わせると、一元管理された環境から許可されたマシンを選ぶサポートチームや運用チームに役立ちます。

Semaphore UIはAnsibleのインベントリ定義を直接再利用します。テンプレートはINI/YAMLの定義、Git内のインベントリ、Ansibleの検出プラグインを使えます。Gitや外部システムがすでに環境を定義しているなら、その情報源を保持し、準備済みの操作間でインベントリを再利用できます。RundeckのAnsible連携でも、そのインベントリをノードモデルにインポートできます。

プロジェクト内でのSemaphore UIのAnsibleインベントリ設定。
Semaphore UI. Ansibleインベントリは、準備済みのタスクテンプレートが再利用できる共有プロジェクトリソースです。
Ansibleインベントリからインポートしたホスト、タグ、接続先アドレスを表示するRundeckのNodes画面。
Rundeck. 公式の連携例にある、Ansibleインベントリからインポートしたノード。 公式ドキュメント

これにより、インベントリも日常業務で再利用できる要素になります。同じ本番インベントリを、個別のテンプレートと入力を持つ証明書チェック、デプロイ、バックアップで利用できます。環境が変わればエンジニアがインベントリの情報源を変更し、同僚は準備済みの操作を引き続き使えます。担当者自身が個々のノードを参照、絞り込みたい場合には、Rundeckのホスト選択画面が重要な違いになります。

シークレット

対応一部対応非対応
シークレット: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
認証情報の保存 対応 対応
HashiCorp Vault 対応Pro 対応Key Storageプラグイン
AWS Secrets Manager 対応Enterprise 対応CommercialKey Storageプラグイン
Azure Key Vault 対応Enterprise 対応CommercialKey Storageプラグイン
OpenBao 対応Pro 一部対応独自の取得ステップ
Devolutions Server 対応Enterprise 一部対応独自のAPIまたはスクリプトのステップ
CyberArk 対応EnterprisePVWA REST連携 対応CommercialKey Storageプラグイン

準備済みの操作には、認証情報を繰り返し取得できる方法が必要です。RundeckのKey StorageとSemaphore UIのキーストアでは、認証情報への参照を一度設定すれば、バックアップやデプロイを起動する同僚が毎回SSH鍵やパスワードを貼り付ける必要はありません。Semaphore UIでは、保存した鍵をプロジェクトのリポジトリとAnsible操作の間でも再利用できます。

組織が中央のシークレットストアをすでに利用していれば、自動化サービスから値を取得できます。Rundeck CommunityはKey StorageプラグインでHashiCorp Vaultに対応し、このプラグインは商用のRunbook Automationにも同梱されています。Semaphore UI ProはHashiCorp VaultとOpenBaoを統合します。EnterpriseはAWS Secrets Manager、Azure Key Vault、Devolutions Server、CyberArkを追加します。既存のシークレット管理手順を維持しながら、自動化の画面で準備済みジョブを共有できる点が利点です。

Rundeckの商用Key Storageプラグインも、AWS Secrets Manager、Azure Key Vault、CyberArkに接続できます。Semaphore UI Enterpriseは、これらに加えてDevolutions Serverを提供します。どちらの製品でも、既存のシークレットサービスを管理元のまま維持できます。Semaphore UIのキーストアとテンプレートの参照は、Ansibleインベントリやツール設定とともに認証情報を管理します。Rundeckはストレージのパスをジョブオプション、プラグイン、ノードでの実行に関連付けます。

OpenBaoやDevolutions Serverの場合、RundeckのジョブにシークレットサービスのAPIを使う独自の取得ステップを含められます。値の取得とその認証はチームが用意し、保守します。名前付きのKey StorageプラグインやSemaphore UIの設定済みストレージ接続とは異なるため、既存のシークレットサービスが必須なら、この方法も評価に含める必要があります。

実行

ジョブは、プライベートホスト、近くに配置したランナー、管理された実行環境で動かす必要がある場合があります。Webサービスの場所だけで、これらの実行方法が決まるわけではありません。

対応一部対応非対応
実行: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
リモート実行 対応ランナー 対応SSHとノードエグゼキューター
リモート実行の中継拠点 対応ランナー 対応Runbook AutomationEnterprise Runner
実行先のルーティング 対応Proプロジェクトランナーとタグ 対応Runbook Automationランナータグ
同時実行制御 対応テンプレートとプロジェクトの制限 対応複数の実行とノードスレッド
コンテナでのジョブ実行 対応ProDockerタスクエグゼキューター 対応Dockerコマンドまたは実行プラグイン

実行環境はプライベートインフラの近くに配置できます。例えば、顧客のネットワーク内にあるSemaphore UIランナーから、そこに接続できるホストに対してAnsibleの保守プレイブックを実行できます。Communityにはグローバルランナーが含まれ、Proはプロジェクトに割り当てるランナーとタグによる振り分けを追加します。Dockerによるタスク実行はProから利用でき、Kubernetesによるタスク実行にはEnterpriseが必要です。両製品の振り分け機能は、対応する商用エディションでタグによる実行用マシンの選択に対応します。

Rundeck Communityでも、通常はSSHや他のノードエグゼキューターを使い、リモートノードでコマンドを実行できます。商用のEnterprise Runnerは、リモート環境に独立した実行拠点を提供します。リモート実行をすべて有償機能とみなさず、各手順をどこで実行し、どの接続が必要かを比較してください。どちらのアプリケーションも、Dockerで導入することと、各ジョブを専用コンテナで実行することは別です。

どちらも並行する処理を制御できます。Semaphore UIはテンプレートごとに並列実行を設定し、プロジェクトごとに実行中のタスク数を制限します。Rundeckは同じジョブの複数実行を許可し、ノードへの処理配布に使うスレッド数を設定できます。これらの設定で、基礎となるプレイブックやランブックを変更せずに実行能力を共有できます。

ワークフロー

サービスの更新では、バックアップ、設定変更、検証、失敗後の復旧が必要になることがあります。手順の組み立て方と再利用可能なサブ手順が、ランブックの保守方法を決めます。

対応一部対応非対応
ワークフロー: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
ワークフローエディター 対応準備済みテンプレートをつなぐグラフ 対応ワークフローの実行方式を備えたステップエディター
複数ツールのワークフロー 対応 対応
再利用可能な子ワークフロー 非対応 対応ジョブ参照
ワークフローでの値の受け渡し 対応 対応
成功時と失敗時の処理 対応タスクの結果による分岐 対応ステップのエラーハンドラーとワークフローの実行方式
承認チェックポイント 対応ワークフローの承認ノード 一部対応外部の承認ゲートと個別に起動するジョブ

複数の操作をまとめる場合、Semaphore UIのワークフローは成功時と失敗時の経路、承認、待機を使ってテンプレートを接続します。例えば、Ansibleによる更新と検証の前にバックアップを行えます。Rundeckは、再利用可能なジョブ参照、ステップ単位のエラーハンドラー、1回だけ実行するステップと選択した各ノードに配布するステップを区別する実行方式を提供します。Semaphore UIでは個別のテンプレートを複数のワークフローで再利用できますが、ワークフロー全体を別のワークフローに組み込むことはできません。

どちらも取得した値を後続のステップに渡せます。Semaphore UI 2.20は、Ansibleのset_stats、Terraform/OpenTofu/Terragruntのoutputs、Bash、PowerShell、PythonのJSONを収集し、宛先の入力に対応付けます。収集はサーバーまたはランナーのローカルエグゼキューターで動作しますが、DockerとKubernetesのエグゼキューターでは動作しません。Rundeckはログフィルターでデータを取得し、内蔵のGlobal Variableステップで後続ステップや親ジョブに値を公開します。どちらの方式でもホストアドレスなどの値は直接渡せますが、ファイルやアーカイブには次のステップからアクセスできるストレージか、明示的な転送が必要です。受け取り側のテンプレートで入力を定義し、プレイブックやインベントリ設定からその値を使って新しいホストを対象にします。

本番環境の更新では、Semaphore UIのワークフローが重要な操作の前に承認ノードで一時停止できます。2.20の承認権限はプロジェクトのタスクを実行する権限に従い、独立した承認者ロールは2.21向けに発表されています。Rundeckのジョブ参照とAPIを使えば、承認する手順を個別に起動するジョブに分け、外部の承認プロセスと接続できます。ただし、通常のジョブ起動を強制された承認とみなすのではなく、承認ゲートと処理の再開をチームで実装する必要があります。

多くのランブックが同じ複数ステップの復旧手順を共有する場合、Rundeckの入れ子のジョブ参照は特に有効です。Semaphore UIでは、再利用する単位が1つのプレイブックやツール呼び出しである場合、共通の操作をテンプレートにしておく方式が適しています。ワークフロー内に別のワークフローが必要な手順では、APIによるオーケストレーションや分割方法の変更が必要になり、設定と結果の扱いが増えます。

アクセス制御と認証

同僚にサービス再起動ボタンを提供するときには、許可する手順、ホスト、サインイン方法も決める必要があります。これらの制御は、担当者が作業を選ぶ方法に合うものであるべきです。

対応一部対応非対応
アクセス制御と認証: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
プロジェクトのアクセス制御 対応プロジェクトロール 対応ACLポリシー
ノードごとのアクセスポリシー 非対応代わりに準備済みジョブの範囲を制限 対応
ジョブ単位の起動権限 対応Enterprise 対応
LDAPとActive Directoryによるサインイン 対応Pro 対応JAASのLDAP設定

RundeckのACLポリシーは、ジョブ、ノード、その他のリソースを区別します。特定の手順とホスト群の一部にアクセスを付与でき、担当者が多くのランブックをまたいで対象を選ぶ場合に有効です。

Semaphore UIはプロジェクトと準備済みテンプレートを中心に作業を委任します。Communityのプロジェクトロールでも、すべての運用担当者に自動化リソースの編集責任を与えずに、同僚がタスクを実行できます。サービス再起動、バックアップ、チェックを1つのプロジェクトにまとめ、エンジニアが定義を管理し、同僚が必要な操作を起動できます。

プロジェクト全体の起動権限では広すぎる場合、Enterpriseがカスタムロールとテンプレート単位の実行権限を追加します。例えば、サポート担当者にはサービス再起動テンプレートを許可し、デプロイは別のロールに制限できます。インベントリ、認証情報、有効な起動時の上書き設定は、そのテンプレートの設定に属します。この方式は、任意のジョブに横断的に適用される独立したノード権限とは異なります。

Semaphore UI ProはLDAP/Active DirectoryとOIDCのサインインに加え、ローカルTOTPを提供します。Rundeckはローカルアカウントと、LDAPやActive Directoryを含むJAAS経由のディレクトリ認証に対応します。認証が利用者を特定し、プロジェクトロールやACLポリシーが、その人に起動できる内容を別途定めます。準備済み操作で許可するホストやパラメーターの上書きは、委任する範囲に合うものだけにする必要があります。

ログと監査

実行記録は操作の失敗を説明します。監査証跡は、誰がサービスを利用、変更したかを示し、セキュリティチームが別途収集できます。

対応一部対応非対応
ログと監査: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
実行履歴とログ 対応 対応
ホストの結果概要 対応ProAnsibleのホスト概要 対応ノードとワークフローステップの結果
管理操作の監査記録 対応記録を有効化し、管理者の監査ログ画面で確認 対応ローカルの監査証跡ファイル
監査イベントのエクスポート 対応ProTLS Syslog と Splunk HEC 対応CommercialAudit Streamプラグイン

操作を実行した同僚は、作成者に再現を頼まずに何が起きたかを確認できる必要があります。どちらも実行結果とログを保持します。Rundeckはジョブのステップとノードごとの結果を表示します。Semaphore UIは各タスクの状態、出力、リポジトリのリビジョン、起動の詳細を保持し、インシデント調査で同じ実行を振り返れるようにします。

Ansibleでのパッチ適用や証明書のジョブ向けに、Semaphore UI Proは成功したホストとサーバーごとに失敗したタスクを示すホスト概要を追加します。担当者は影響を受けたホストから対応する出力を確認できます。この概要がなくても、Communityのタスク履歴とログは有用です。これらの実行記録は自動化処理を説明し、管理操作の監査イベントは別の目的を担います。

Rundeckは監査リスナーで監査イベントを記録し、ACLの判断には独立した認可ログを用意しています。商用のRunbook Automationは外部サービス向けのAudit Streamプラグインを追加し、ログエージェントでローカルファイルを収集することもできます。Semaphore UIは記録を有効にすると管理者向けの監査ログ画面を提供し、ProはTLS SyslogやSplunk HECでイベントを転送します。セキュリティチームはアクセスや設定の確認にこれらの記録を使い、エンジニアはタスクログとホスト概要で操作自体を調査できます。

連携

対応一部対応非対応
連携: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
REST API 対応 対応
受信Webhook 対応リクエストの照合と入力値の抽出 対応Run Jobハンドラー
ジョブ通知 対応メール、Slack、Teamsなどのチャネル 対応メール、Webhook、通知プラグイン

Rundeckのプラグインシステムは実行、検出、通知、シークレットの保存をカバーし、一部の連携は商用のRunbook Automationに限定されます。受信WebhookはRun Jobなどのハンドラーを使います。ランブックに複数の運用製品固有のアクションが必要な場合に、この幅広さが役立ちます。

Semaphore UIはREST APIと、リクエストの照合や入力抽出を備えたWebhook連携を提供します。CIパイプラインでリリースをビルド、公開し、そのバージョンIDで準備済みデプロイを要求できます。Semaphore UIがデプロイ用のインベントリ、認証情報、実行履歴を保持し、CIシステムがビルドを引き続き担当します。呼び出し側の連携処理は認証を行い、完了を待つ必要がある場合はタスクの結果を確認します。

Semaphore UIの内蔵通知チャネルには、メール、Slack、Microsoft Teams、Telegram、Rocket.Chat、DingTalk、Gotifyがあります。Rundeckはメール、Webhook、通知プラグインを通じてジョブイベントを通知します。バックアップや証明書チェックの失敗を既存の運用チャネルに届けながら、自動化サービス内に実行記録を保持できます。チャット内で操作して承認するには、通知リンクを送るだけでは足りません。

AI を活用した自動化

対応一部対応非対応
AI を活用した自動化: RundeckとSemaphore UI
比較項目 Semaphore UI Rundeck
MCPコネクター 対応コミュニティ製コネクター 対応公式MCPサーバー

RundeckはアシスタントをインスタンスのAPIに接続する公式MCPサーバーを提供します。Semaphore UIにはコミュニティ製のMCPコネクターがあり、2.21.0でPro向けの公式MCPサポートを発表しています。ドキュメントとAPIも、MCP接続なしでの設定準備やジョブ出力の調査に役立ちます。

ライセンスとサポート

どちらにも無料のオープンソース版があります。商用機能、選択するホスティング方式、サポート契約によって、チームが支払い、運用する範囲が変わります。

Rundeckの選択肢

Rundeck CommunityはApache 2.0ライセンスです。商用製品のPagerDuty Runbook Automationは、Enterprise Runner、クラスタリング、追加プラグインなどの機能と専門のサポートを提供します。SaaSの選択肢では、アプリケーションサービスの運用責任もベンダーに移ります。

Semaphore UIのエディション

Semaphore UI Communityは無料でMITライセンスです。テンプレート、入力フォーム、変数グループ、スケジュール、プロジェクトロール、タスク履歴、グローバルランナーによって、共有の運用サービスをすでに構成できます。ProはTerraformステートバックエンド、プロジェクトランナー、Dockerによるタスク実行、外部シークレット管理との連携などを追加します。Enterpriseはカスタムロール、テンプレート権限、Kubernetesでのタスク実行、高可用性を追加します。ProとEnterpriseには商用サポートがあり、その義務は適用されるプランと契約で定められます。

運用コスト

Ansible中心のチームでは、Semaphore UIが既存のプレイブックやIaC設定を共有するための準備を減らせます。ツール別のテンプレートと再利用可能なプロジェクトリソースが、コマンドのラッパーや追加のジョブ設定で担う作業を扱います。ネイティブバイナリはJVMなしの導入方法も提供します。その結果、目的を絞った環境をよりシンプルに運用できる場合があります。一方、すでに運用しているRundeckが、必要な連携とジョブの仕組みを提供している場合もあります。

選び方

同僚が必要とする手順から考えてみましょう。サービスの再起動、バックアップ、デプロイ、環境のプロビジョニングなどです。重要なのは、誰が準備し、誰が対象を選び、操作のどの部分をプラットフォームが管理するかです。

Rundeckを選ぶ場面

ランブックとノードモデルが日常業務の中心である場合、Rundeckが適しています。

  • 担当者がプラットフォームを通じてノードを選択、管理する。 ノード属性、フィルター、独立したノードポリシーが、複数のジョブを通じて担当者が操作できるマシンを決めます。
  • 手順が再利用可能なジョブステップとプラグインに依存している。 ジョブ参照、ノード固有のステップ、エラーハンドラーによって、必要な復旧や保守の手順を表現します。
  • マネージドサービスや既存の連携に価値がある。 商用のRunbook Automationは、チームが自ら管理する必要があるSaaSホスティング、実行拠点、製品固有の連携を提供できます。

Semaphore UI を選ぶ場合

既存のプレイブック、Terraform/OpenTofu設定、スクリプトを専用のタスクテンプレートで共有したい場合は、Semaphore UIが適しています。Ansibleのみ、IaCのみのワークフローにも、複数のツールを1つの運用サービスにまとめる場合にも使えます。

  • Ansibleプレイブックで作業がすでに定義されている。 パッチ適用、再起動、バックアップ、証明書の更新でリポジトリ、インベントリ、認証情報を再利用し、同僚が指定する値は入力フォームで受け付けます。
  • プロビジョニングと保守を同じサービスで扱いたい。 Terraform/OpenTofuやTerragruntを直接使い、ワークフローで構成とチェックをつなぎ、共有バックエンドが必要ならProのステートストレージを追加できます。
  • 対象がAnsibleインベントリですでに定義されている。 自動化プラットフォームに別のノード一覧やノード単位の権限を設けず、その定義を準備済みの操作間で再利用できます。Communityでプロジェクトのテンプレートを共有し、選択した操作だけにアクセスを絞る必要がある場合はEnterpriseの権限を追加します。
  • 目的を絞ったセルフホスト環境が欲しい。 既存のインフラでバイナリ、パッケージ、コンテナを実行し、プライベートシステムの近くにランナーを置けます。実行やサポートの要件が増えたら商用エディションを選べます。

Semaphore UIとRundeckの併用

ノードフィルターや専用プラグインに依存するRundeckのランブックを残しながら、AnsibleとIaCの操作を再利用可能なSemaphore UIテンプレートに移せます。例えば、Rundeckの復旧ジョブからSemaphore UIのタスクAPIを呼び、テンプレートに準備したインベントリと認証情報を使って、選択したホストにAnsibleの修復処理を実行できます。ランブックを再利用しつつ、構成、プロビジョニング、定期保守にSemaphore UIを導入できます。

既製の連携をインストールするのではなく、チームがこの接続を構築します。呼び出し側のジョブには、APIトークン、ネットワークアクセス、選択したノードをテンプレートのホストlimit入力に対応付ける処理、返されたタスクの最終状態を確認するロジックが必要です。ランブックから対象を指定する場合は、テンプレートでホストlimitの上書きを有効にします。Rundeckのノード名を、テンプレートが想定するAnsibleインベントリのホスト名に対応付けてください。実行を制御するのはSemaphore UIのAPIアカウント自身の権限であり、Rundeckのノード単位の権限がリクエストとともに移るわけではありません。既存のRundeckランブックに引き続き価値があるなら2つのサービスの併用が有効ですが、そうでなければ操作を統合することで追加の連携保守を避けられます。

よくある質問

既存のAnsibleプレイブックとインベントリを再利用できますか?

はい。Rundeckの内蔵Ansible連携はプレイブックを実行し、インベントリをノードモデルにインポートします。Semaphore UIはタスクテンプレートを通じて、プレイブックを再利用可能なインベントリ、認証情報の参照、変数グループに関連付けます。同じインベントリをデプロイ、証明書の確認、その他の準備済み操作に利用できます。

同僚は自動化コードを編集せずにサービスを再起動できますか?

はい。Semaphore UI Communityのプロジェクトロールでは、エンジニアが設定を管理し、Task Runnerが準備済みテンプレートを実行できます。プロジェクト全体の起動権限では広すぎる場合、Enterpriseが選択したテンプレートの権限を追加します。RundeckはジョブとノードのACLを使い、担当者が複数のランブックをまたいで許可されたホストを選ぶ必要がある場合に役立ちます。

ジョブからプライベートネットワーク内のシステムに接続できますか?

はい。Semaphore UIは対象システムの近くにあるランナーで実行でき、Proではプロジェクトへの割り当てとタグによる振り分けが追加されます。Rundeck Communityでもリモートノードにコマンドを配布でき、商用のEnterprise Runnerは独立した実行拠点を追加します。適切な方式は、自動化の実行環境とネットワーク接続をどこに置く必要があるかによって決まります。

RundeckのランブックをSemaphore UIに移す際、何を対応付ける必要がありますか?

既存のプレイブックと対応するコマンドファイルは再利用できますが、ジョブのオプション、ノードフィルター、認証情報、権限、ステップ間の関係には、対応するテンプレートとワークフローの設定が必要です。特にジョブ参照とエラーハンドラーを確認してください。Semaphore UIは個々のテンプレートをワークフロー間で再利用できますが、ワークフロー全体を別のワークフローに組み込むことはできません。

RundeckとSemaphore UIを併用できますか?

はい。RundeckのジョブからSemaphore UI APIを呼び出し、準備済みのAnsibleやIaCタスクを実行して最終状態を確認できます。ノード中心の手順や多くのプラグインを使うランブックをRundeckに残し、Semaphore UIでツール別の操作とその後の保守を担当できます。API接続と結果の処理はチームが実装します。

この記事は役に立ちましたか?

出典

  1. Semaphore UI, “Semaphore automation applications”. URL: https://semaphoreui.com/docs/user-guide/apps (参照日: ).
  2. Semaphore UI, “Semaphore installation methods and dependencies”. URL: https://semaphoreui.com/docs/admin-guide/installation (参照日: ).
  3. Semaphore UI, “Semaphore global runners”. URL: https://semaphoreui.com/docs/admin-guide/runners/ (参照日: ).
  4. Semaphore UI, “Semaphore workflow nodes and approvals”. URL: https://semaphoreui.com/docs/user-guide/workflows (参照日: ).
  5. Semaphore UI, “Semaphore Community, Pro and Enterprise”. URL: https://semaphoreui.com/pricing (参照日: ).
  6. Semaphore UI, “Semaphore Terraform HTTP backend”. URL: https://semaphoreui.com/docs/user-guide/apps/terraform/states (参照日: ).
  7. Semaphore UI, “Semaphore project access”. URL: https://semaphoreui.com/docs/user-guide/projects (参照日: ).
  8. Semaphore UI, “Semaphore inventories”. URL: https://semaphoreui.com/docs/user-guide/inventory (参照日: ).
  9. Semaphore UI, “Semaphore variable groups”. URL: https://semaphoreui.com/docs/user-guide/environment (参照日: ).
  10. Semaphore UI, “Semaphore scheduled tasks”. URL: https://semaphoreui.com/docs/user-guide/schedules (参照日: ).
  11. Semaphore UI, “Semaphore Key Store”. URL: https://semaphoreui.com/docs/user-guide/key-store (参照日: ).
  12. Semaphore UI, “Semaphore high availability prerequisites”. URL: https://semaphoreui.com/docs/admin-guide/ha#prerequisites (参照日: ).
  13. Semaphore UI, “Semaphore local execution, workflow outputs, inventory paths, host limits and branch overrides”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/tasks/local_executor.go (参照日: ).
  14. Semaphore UI, “Semaphore task dispatch, runner routing, concurrency and remote workflow outputs”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/services/tasks/TaskPool.go (参照日: ).
  15. PagerDuty, “Installing Rundeck”. URL: https://docs.rundeck.com/docs/administration/install/ (参照日: ).
  16. PagerDuty, “Instance System Requirements”. URL: https://docs.rundeck.com/docs/administration/install/system-requirements.html (参照日: ).
  17. Rundeck contributors, “Rundeck 6.2.1 Apache 2.0 license”. URL: https://github.com/rundeck/rundeck/blob/v6.2.1/LICENSE (参照日: ).
  18. Rundeck contributors, “Rundeck 6.2.1 release”. URL: https://github.com/rundeck/rundeck/releases/tag/v6.2.1 (参照日: ).
  19. PagerDuty, “Integrate with Ansible”. URL: https://docs.rundeck.com/docs/learning/howto/using-ansible.html (参照日: ).
  20. PagerDuty, “Builtin Node Steps”. URL: https://docs.rundeck.com/docs/manual/jobs/job-plugins/node-steps/builtin.html (参照日: ).
  21. PagerDuty, “Creating jobs”. URL: https://docs.rundeck.com/docs/manual/jobs/creating-jobs.html (参照日: ).
  22. PagerDuty, “Job Options”. URL: https://docs.rundeck.com/docs/manual/jobs/job-options.html (参照日: ).
  23. PagerDuty, “Job Workflows”. URL: https://docs.rundeck.com/docs/manual/jobs/job-workflows.html (参照日: ).
  24. PagerDuty, “Builtin Workflow Steps and global variables”. URL: https://docs.rundeck.com/docs/manual/jobs/job-plugins/workflow-steps/builtin.html (参照日: ).
  25. PagerDuty, “Overview of Access Control”. URL: https://docs.rundeck.com/docs/learning/getting-started/acl-overview.html (参照日: ).
  26. PagerDuty, “Enterprise Runner”. URL: https://docs.rundeck.com/docs/administration/runner/runner-overview.html (参照日: ).
  27. PagerDuty, “Runbook Automation”. URL: https://docs.rundeck.com/docs/enterprise/ (参照日: ).
  28. PagerDuty, “Runbook Automation SaaS”. URL: https://docs.rundeck.com/docs/about/cloud/ (参照日: ).
  29. PagerDuty, “Plugin Developer Guide”. URL: https://docs.rundeck.com/docs/developer/ (参照日: ).
  30. PagerDuty, “Rundeck / Runbook Automation MCP Server”. URL: https://docs.rundeck.com/docs/mcp/ (参照日: ).
  31. Semaphore UI, “Semaphore REST API”. URL: https://semaphoreui.com/api-docs (参照日: ).
  32. Semaphore UI, “Semaphore team roles and template-level permissions”. URL: https://semaphoreui.com/docs/user-guide/team#extended-rbac (参照日: ).
  33. Semaphore UI, “Semaphore source and MIT license”. URL: https://github.com/semaphoreui/semaphore (参照日: ).
  34. Semaphore UI, “Semaphore workflow input mapping model”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db/Workflow.go#L27-L44 (参照日: ).
  35. Semaphore MCP contributors, “Semaphore MCP connector”. URL: https://github.com/cloin/semaphore-mcp (参照日: ).
  36. Semaphore UI, “Semaphore task template options and survey field types”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db/Template.go (参照日: ).
  37. PagerDuty, “API Reference”. URL: https://docs.rundeck.com/docs/api/ (参照日: ).
  38. PagerDuty, “Integrate with HashiCorp Vault”. URL: https://docs.rundeck.com/docs/learning/howto/vault-integration.html (参照日: ).
  39. PagerDuty, “Webhooks”. URL: https://docs.rundeck.com/docs/manual/webhooks.html (参照日: ).
  40. Semaphore UI, “Tasks, execution history and Ansible summaries”. URL: https://semaphoreui.com/docs/user-guide/tasks (参照日: ).
  41. Semaphore UI, “Terraform plan and apply command construction in the Semaphore UI 2.20 candidate”. URL: https://github.com/semaphoreui/semaphore/blob/58a596ed20b724af67c468588edcda12d1779549/db_lib/TerraformApp.go (参照日: ).
  42. PagerDuty, “Node Sources Overview”. URL: https://docs.rundeck.com/docs/manual/projects/resource-model-sources/ (参照日: ).
  43. PagerDuty, “Nodes”. URL: https://docs.rundeck.com/docs/manual/05-nodes.html (参照日: ).
  44. PagerDuty, “Activity”. URL: https://docs.rundeck.com/docs/manual/08-activity.html (参照日: ).
  45. PagerDuty, “Rundeck Key Storage”. URL: https://docs.rundeck.com/docs/manual/key-storage/ (参照日: ).
  46. Semaphore UI, “Netbox Dynamic Inventory Integration with Semaphore”. URL: https://semaphoreui.com/docs/user-guide/inventory/netbox-dynamic-inventory (参照日: ).
  47. Semaphore UI, “Semaphore UI integrations”. URL: https://semaphoreui.com/docs/user-guide/integrations (参照日: ).
  48. Semaphore UI, “Repositories and shared automation checkout”. URL: https://semaphoreui.com/docs/user-guide/repositories (参照日: ).
  49. PagerDuty, “Git SCM for job definitions”. URL: https://docs.rundeck.com/docs/manual/projects/scm/git.html (参照日: ).
  50. PagerDuty, “Job variables and project global variables”. URL: https://docs.rundeck.com/docs/manual/jobs/job-variables.html (参照日: ).
  51. Rundeck, “AWS Secrets Manager Key Storage plugin”. URL: https://docs.rundeck.com/docs/manual/key-storage/storage-plugins/aws-secrets-manager.html (参照日: ).
  52. Rundeck, “Azure Key Vault Key Storage plugin (Commercial)”. URL: https://docs.rundeck.com/docs/manual/key-storage/storage-plugins/azure-vault.html (参照日: ).
  53. Semaphore UI, “Semaphore UI authentication”. URL: https://semaphoreui.com/docs/admin-guide/authentication (参照日: ).
  54. Rundeck, “Authenticating Rundeck users”. URL: https://docs.rundeck.com/docs/administration/security/authentication.html (参照日: ).
  55. Semaphore UI, “Semaphore UI audit log and forwarding”. URL: https://semaphoreui.com/docs/admin-guide/audit-log (参照日: ).
  56. Rundeck, “Rundeck audit trail log”. URL: https://docs.rundeck.com/docs/administration/security/audit-trail.html (参照日: ).
  57. Semaphore UI, “View the Semaphore UI audit log”. URL: https://semaphoreui.com/docs/admin-guide/audit-log/view (参照日: ).
  58. Rundeck, “Rundeck application and audit logs”. URL: https://docs.rundeck.com/docs/administration/maintenance/logs.html (参照日: ).
  59. Semaphore UI, “Semaphore UI notification channels”. URL: https://semaphoreui.com/docs/admin-guide/notifications (参照日: ).
  60. Rundeck, “Rundeck job notifications”. URL: https://docs.rundeck.com/docs/manual/jobs/job-notifications.html (参照日: ).
  61. Semaphore UI, “OpenBao secret storage”. URL: https://semaphoreui.com/docs/user-guide/key-store/openbao (参照日: ).
  62. Semaphore UI, “Devolutions Server secret storage”. URL: https://semaphoreui.com/docs/user-guide/key-store/devolutions-server (参照日: ).
  63. Semaphore UI, “CyberArk secret storage”. URL: https://semaphoreui.com/docs/user-guide/key-store/cyberark (参照日: ).
  64. Rundeck, “CyberArk Key Storage plugin (Commercial)”. URL: https://docs.rundeck.com/docs/manual/key-storage/storage-plugins/cyberark-storage.html (参照日: ).
  65. Rundeck, “Rundeck 6.2.1 audit log listener”. URL: https://github.com/rundeck/rundeck/blob/v6.2.1/plugins/audit-logging-plugin/src/main/groovy/org/rundeck/plugin/audit/AuditLoggerPlugin.groovy (参照日: ).
  66. Rundeck, “Rundeck 6.2.1 audit event dispatch”. URL: https://github.com/rundeck/rundeck/blob/v6.2.1/rundeckapp/src/main/groovy/rundeck/services/audit/AuditEventsService.groovy (参照日: ).
  67. Rundeck, “Rundeck Audit Stream plugin”. URL: https://docs.rundeck.com/docs/administration/security/audit-stream-plugin.html (参照日: ).

上記のドキュメント、リポジトリ、製品情報に基づきSemaphore UI Teamが作成した比較です。各出典に参照日を記載しています。