背景
Playbookのタスクを大きく二つに分けるために、Ansibleのオプションにある
tagsを用いて制御しようとした。
しかし、include処理が毎回呼ばれてしまうケースに遭遇。
それが原因で、
そのタスク処理で使用する変数を毎回渡さないとエラーになったり、
Ansibleの標準出力結果の「PLAY RECAP」にそのタスクがカウントされてしまう。
調査しても原因がわからず、、、、
誰かこの事象の原因、解決策をご存じの方がいましたら
教えてください。
Sample Code
デバッグモジュールで「hogeXX」とメッセージを出力するシンプルなコードです。
hogeAはメインymlで出力し、hogeB、hogeCはサブymlをincludeして出力しています。
問題となっているのはhogeCで、このタスクが毎回実施されてしまいます。
test.yml --- - name: Junos Module TEST hosts: all # gather_facts: no # become: yes vars: - hoge_dic: - { name: hogeC, msg: hogeC } tasks: - name: hogeA debug: msg="hogeA" tags: hogeA - name: hoges block: - name: hogeB include: hogeB.yml - name: hogeC include: hogeC.yml with_items: - "{{ hoge_dic }}" loop_control: loop_var: hoge_info tags: hoges
hogeB.yml - name: hogeB debug: msg="hogeB"
hogeC.yml - name: hogeC debug: msg="{{ item.msg }}" with_items: - "{{ hoge_info }}"
出力結果 ※tag[hogeA」指定
[root@test playbook]# ansible-playbook -i localhost, test.yml --tags=hogeA PLAY [Junos Module TEST] ******************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************** ok: [localhost] TASK [hogeA] ******************************************************************************************************************************************************************************************************************************** ok: [localhost] => { "msg": "hogeA" } TASK [hogeC] ******************************************************************************************************************************************************************************************************************************** included: /etc/ansible/playbook/hogeC.yml for localhost PLAY RECAP ********************************************************************************************************************************************************************************************************************************** localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
出力結果 ※tag[hoges」指定
[root@test playbook]# ansible-playbook -i localhost, test.yml --tags=hoges PLAY [Junos Module TEST] ******************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************** ok: [localhost] TASK [hogeB] ******************************************************************************************************************************************************************************************************************************** ok: [localhost] => { "msg": "hogeB" } TASK [hogeC] ******************************************************************************************************************************************************************************************************************************** included: /etc/ansible/playbook/hogeC.yml for localhost TASK [hogeC] ******************************************************************************************************************************************************************************************************************************** ok: [localhost] => (item={u'msg': u'hogeC', u'name': u'hogeC'}) => { "msg": "hogeC" } PLAY RECAP ********************************************************************************************************************************************************************************************************************************** localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
毎回"TASK [hogeC]"が実施されてしまいます。。。。。
失礼しました。
tags:hogesを指定した場合、included: /etc/ansible/playbook/hogeC.yml for localhostとログが出ていますが、その後のtaskは実行されていますか?
また、includeではなく、include_tasksではどうですか?
versionは最新のものを使っていますか?
include_tasksを指定することで
解決できました❗
お付き合い頂き大変ありがとうございます!
ちなみに、バージョンは2.81
その後のタスクは実行されていませんでした
回答2件
あなたの回答
tips
プレビュー