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

Ansible

Semaphore UI を使用して Ansible playbook を実行できます。そのためには、Ansible Playbook テンプレートを作成する必要があります。

  1. タスクテンプレートセクションに移動し、新しいテンプレート、次に Ansible Playbook をクリックします。

  1. テンプレートを設定します。

テンプレートでは次のパラメータを指定できます。

  • リポジトリ
  • playbook ファイルへのパス
  • 作業ディレクトリ (任意)
  • インベントリ
  • 変数グループ
  • Vault
  • 追加の CLI 引数 (tags、skip-tags、limit、verbosity)
  • 環境変数

作業ディレクトリ

作業ディレクトリを使用すると、テンプレートのリポジトリのサブディレクトリから Ansible コマンドを実行できます。リポジトリのルートからの相対パスを入力します。たとえば、ansible.cfg<repository>/automation に保存されている場合は automation と入力します。絶対パスとリポジトリ外のパスは拒否されます。省略した場合、Semaphore はリポジトリのルートを使用します。

作業ディレクトリは、プロセスのカレントディレクトリに依存する Ansible の動作に影響します。Ansible の設定ファイルの検索順序には、カレントディレクトリの ansible.cfg が含まれます。作業ディレクトリは、追加の CLI 引数内の相対パスの解決にも影響します。例として --extra-vars @vars.yml--private-key key.pem があります。playbook とファイルインベントリのパスは、引き続きそれぞれのリポジトリのルートからの相対パスです。

作業ディレクトリを変更しても、それだけでそのディレクトリの roles/collections/ サブディレクトリが Ansible の検索パスに追加されるわけではありません。playbook からの相対的なロール検出playbook に隣接するコレクションは、引き続き playbook の場所を基準とします。ただし、選択された ansible.cfgroles_pathcollections_path を設定している場合は、作業ディレクトリが間接的にそれらの検出に影響することがあります。

テンプレートの種類

ansible-playbook テンプレートは、次のいずれかの種類にできます。

Task

指定されたパラメータで、指定された playbook を実行するだけです。

limit 機能を使って API 呼び出しでテンプレートを起動する場合は、必ず Ansible prompts: Limit オプションを有効にしてください。そうしないと、API 呼び出しで設定された limit は無視されます。API でトリガーされたタスクでは対話的なプロンプトは表示されず、タスクは無人で実行されます。

Build

この種類のテンプレートは、アーティファクトを作成するために使用します。アーティファクトの開始バージョンはテンプレートのパラメータで指定できます。実行ごとにアーティファクトのバージョンが増加します。

Semaphore は初期状態ではアーティファクトをサポートしておらず、タスクのバージョン管理のみを提供します。アーティファクトの作成は自分で実装する必要があります。その方法については、CI/CD の記事を参照してください。

Deploy

この種類のテンプレートは、アーティファクトを配布先サーバーにデプロイするために使用します。各 deploy テンプレートは build テンプレートに関連付けられます。

これにより、アーティファクトの特定のバージョンをサーバーにデプロイできます。

テンプレートのオプション

スケジュール

テンプレート設定で cron スケジュールを指定して、タスクのスケジュール実行を設定できます。cron 式の形式はドキュメントで確認できます。

リポジトリに新しい commit が追加されたときにタスクを実行する

cron を使用してリポジトリの新しい commit を定期的にチェックし、commit の到着時にタスクをトリガーできます。

たとえば、アプリのソースコードが Git リポジトリにあるとします。それをリポジトリに追加し、新しい commit に対して Build タスクをトリガーできます。

tags、skip-tags、limit

テンプレートは次の Ansible CLI オプションをサポートします。

  • --tags
  • --skip-tags
  • --limit

これらはテンプレートで設定でき、タスクの作成時に上書きできます。API 経由でこれらの値を渡す予定がある場合は、対応するプロンプトが有効になっていることを確認してください。

並列実行 (--forks / -f)

テンプレートの追加の CLI 引数--forks または -f を渡すことで、Ansible が並列に接続するホスト数を制御できます。引数は有効な JSON である必要があります — 個別のトークンの配列を使用してください。

["--forks", "10"]

短縮形もサポートされています。

["-f", "10"]

テンプレートでタスクでの引数の上書きを許可が有効な場合、タスクは 実行時に独自の forks 値を指定できます。Ansible はテンプレートと タスクの両方の引数を受け取り、コマンドライン上で最後にある --forks / -f が優先されます。

引数が有効な JSON でない場合、タスクは実行開始前に わかりやすい検証エラーで失敗します。

認証

playbook 内のホストの認証は、インベントリに設定されたキーストアのユーザー参照を使用して行われます。SSH のユーザーは、キーストア要素の任意のユーザー設定によって決まります。

複数の Vault パスワード

キーストアから複数の Vault パスワードをテンプレートに添付できます。実行時、Ansible は指定されたパスワードで復号を試みます。

詳細度レベル

トラブルシューティングに役立てるため、テンプレート/タスクのフォームからタスクの Ansible の詳細度 (例: -v-vvv) を調整できます。