このansibleプレイブックを想像してください:
- name: debug foo
debug: msg=foo
tags:
- foo
- name: debug bar
debug: msg=bar
tags:
- bar
- name: debug baz
debug: msg=baz
tags:
- foo
- bar
debug baz
タスクのみを実行するにはどうすればよいですか? foo
AND bar
でタグ付けされたタスクのみを実行したい。それは可能ですか?
私はこれを試しましたが、3つのタスクすべてを実行します。
ansible-playbook foo.yml -t foo,bar
Ansibleタグは、比較として「and」ではなく「or」を使用します。さらに別のタグを作成するソリューションが適切です。
when
ディレクティブを試してください:
- name: debug foo
debug: msg=foo
tags:
- foo
- name: debug bar
debug: msg=bar
tags:
- bar
- name: debug baz
debug: msg=baz
when:
- '"foo" in ansible_run_tags'
- '"bar" in ansible_run_tags'
正しい構文は次のとおりです。
- name: debug baz
debug: msg=baz
tags: foo, bar
この方法を使用する場合:
- name: debug baz
debug: msg=baz
tags:
- foo
- bar
操作を行いましたOR。したがって、次のコマンドを使用する場合:
ansible-playbook -i inventory test.yml --tags foo
または
ansible-playbook -i inventory test.yml --tags bar
このタスクを実行します。
使用する場合:
- name: debug baz
debug: msg=baz
tags:
- foo, bar
操作を行いました。したがって、コマンドのみ:
ansible-playbook -i inventory test.yml --tags foo, bar
このタスクを実行します。