Ansible Playbook タグの継承
Ansible Playbook のタグについて、混乱する挙動があったので調べてみました。
タグの継承についてです。
https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tag-inheritance
- name: Test Tag
hosts: localhost
connection: local
tasks:
- name: "step_1"
debug:
msg: "こんにちは"
- name: "step_2"
debug:
msg: "hello"
tags:
- hello
この Playbook を hello
タグを指定して実行すると、タグが付いていない step_1
タスクは無視され、step_2
タスクのみが実行されます。
ここまでは想定通りです。
では、この Play 自身にも次のように hello
タグが付与されている場合、hello
タグを指定して実行するとどのタスクが実行されるでしょう。
- name: Test Tag
hosts: localhost
connection: local
tasks:
- name: "step_1"
debug:
msg: "こんにちは"
- name: "step_2"
debug:
msg: "hello"
tags:
- hello
tags:
- hello
実行結果は次の通りです。
$ ansible-playbook tagtest.yml -t "hello"
PLAY [Test Tag] ************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [step_1] **************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "こんにちは"
}
TASK [step_2] **************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "hello"
}
PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
タグの付いていない step_1
も含め、すべてのタスクが実行されています。
この挙動に最初は混乱していたのですが、タスクはその親に当たる Play からタグを継承していて、step_1
タスクにも hello
タグが付いているのだと分かりました。
一つの Playbook に複数の Play が含まれている場合。以下の Playbook を、hello
タグを指定して実行すると、「こんにちは」「hello」「Ciao」が出力されます。
- name: "Test Tag 1"
hosts: localhost
connection: local
tasks:
- name: "step_1"
debug:
msg: "こんにちは"
- name: "step_2"
debug:
msg: "hello"
tags:
- hello
tags:
- hello
- name: "Test Tag 2"
hosts: localhost
connection: local
tasks:
- name: "step_1"
debug:
msg: "Hola"
- name: "step_2"
debug:
msg: "Ciao"
tags:
- hello
Author And Source
この問題について(Ansible Playbook タグの継承), 我々は、より多くの情報をここで見つけました https://qiita.com/t-otsuka/items/4e5a0beb1a107e5add62著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .