前回は、Ansible AWX・Towerで発行しているコマンドの取得方法をご紹介しました。
今回は、それを加工して、実行したプレイブックのファイル名を取得する方法を解説します。
プレイブックの構文
プレイブックに下記のように記述することで、プレイブック名を取得することが可能です。
取得した結果は、変数「playbook_name」に格納されます。
---
- hosts: all
gather_facts: False
tasks:
- name: "プレイブック名の取得"
vars:
playbook_name: "{{ (lookup('file', '/proc/self/cmdline') | regex_replace('\u0000',' ')).split()|select('match','^[a-z-_/]*[.]y[a]*ml')|list|first|basename }}"
debug:
msg: "実行プレイブック名:{{ playbook_name }}"
リンク
実行結果
今回は、Ansible AWXで実行したので、そのジョブの実行結果になります。
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [プレイブック名の取得] **************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "実行プレイブック名:util.yml"
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
記事は以上です。AWX・Towerでは、実行結果ログをテキストファイルで取得することも可能ですが、そのログには実行したプレイブック名が出力されていません。
なので、ジョブの頭で本処理を実行しておくことで、テキスト形式のログでも実行したプレイブック名を確認することが可能になります。
部品化などしておくと便利かもしれませんね。
リンク
コメント