てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible/EDA] Automation Controller のジョブテンプレート側で、EDA Controller 側のイベント情報を参照できる ansible_eda 変数

はじめに

EDA Controller 側から run_job_temolate アクションを利用すると、API 経由でAutomation Controller のジョブテンプレートを実行できます。

(なお、ansible-rulebook 1.0.0 現在、ワークフロージョブテンプレートは実行できません。機能追加予定 PR #5423

ジョブテンプレート側では、ansible_eda という変数名を参照すると、イベントの詳細な情報を利用できます。

EDA Controller (Rulebook) 側で condition などに利用していた情報を、Playbook 側でも利用できるようなイメージです。

ansible-rulebook のドキュメント にも記載があります。

The text above describes how to use events or facts in a rulebook. A single matched event or multiple matched events are also sent to a playbook through extra_vars under namespace ansible_eda when a run_playbook or run_job_template action is executed. So in a playbook you should reference them as ansible_eda.event or ansible_eda.events. Facts are not sent to playbooks.

忘れがちな準備: 起動プロンプトを有効にする

ansible_eda 変数の値は、extra_vars (追加変数、画面上は「変数」)として渡たります。

API で呼ばれるため、ジョブテンプレートの追加変数の「起動プロンプト」を有効にしておく必要があります。個人的に忘れがちです。

忘れずに起動プロンプトを有効にする

これで準備できました。あとは run_job_template アクションで呼ぶだけです。

ジョブを見ると以下のように追加変数で ansible_eda 変数が渡ってきていることがわかります。

ansible_eda 変数が渡ってきた