如何只使用多个标签运行ansible任务?

chm*_*mac 30 ansible ansible-playbook

想象一下这个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
Run Code Online (Sandbox Code Playgroud)

我怎么才能只运行debug baz任务?我想说只运行用fooAND 标记的任务bar.那可能吗?

我尝试了这个,但它将运行所有3个任务:

ansible-playbook foo.yml -t foo,bar
Run Code Online (Sandbox Code Playgroud)

Bru*_*e P 27

Ansible标签使用"或"而非"和"作为比较.您创建另一个标记的解决方案是合适的.


H0W*_*ARD 5

尝试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'
Run Code Online (Sandbox Code Playgroud)