Ansible Tower/AWXでは、コマンドラインでのAnsibleとは異なり、実行されるコマンドが見えません。ここでは、lookupプラグインを用いて、実行コマンドを取得する方法をご紹介したいと思います。
プレイブックの構文
プレイブックに下記のように記述することで、実行コマンドを取得することが可能です。
取得した結果は、変数「exec_cmd」に格納されます。
---
- hosts: all
gather_facts: False
tasks:
- name: "実行コマンドの取得"
vars:
exec_cmd: "{{ (lookup('file', '/proc/self/cmdline') | regex_replace('\u0000',' ')) }}"
debug:
msg: "実行コマンド:{{ exec_cmd }}"
実行結果
今回は、Ansible AWXで実行したので、そのジョブの実行結果になります。
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [実行コマンドの取得] ***************************************************************
ok: [SYUTAKUAPL01] => {
"msg": "実行コマンド:/usr/bin/python3.6 /usr/bin/ansible-playbook -u ansible --ask-pass --become-method sudo --become-user root --ask-become-pass -i /tmp/awx_239_x003uiio/tmpua6b08bz -e @/tmp/awx_239_x003uiio/env/extravars util.yml "
}
PLAY RECAP *********************************************************************
SYUTAKUAPL01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
下記は取得されたコマンドのみを抜粋したものになります。
/usr/bin/python3.6 /usr/bin/ansible-playbook -u ansible --ask-pass --become-method sudo --become-user root --ask-become-pass -i /tmp/awx_239_x003uiio/tmpua6b08bz -e @/tmp/awx_239_x003uiio/env/extravars util.yml
記事は以上になります。コマンドライン版のAnsibleから、AWXやTowerに移行した際、どのようなコマンドが発行されているのかを確認する際などにご活用頂ければと思います。
コメント