it-swarm.com.ru

Как я могу запускать только заданные задачи с несколькими тегами?

Представьте себе этот сборник пьес:

- 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 И bar. Это возможно?

Я попробовал это, но он запустит все 3 задачи:

ansible-playbook foo.yml -t foo,bar
28
chmac

Ansible теги используют "или" не "и" в качестве сравнения. Ваше решение для создания еще одного тега является подходящим.

23
Bruce P

Я считаю, что правильный синтаксис:

- name: debug baz
  debug: msg=baz
  tags: foo, bar
0
foofunner

Если вы используете этот способ: 

- name: debug baz
  debug: msg=baz
  tags:
    - foo
    - bar

Вы сделали операцию ИЛИ. Итак, если вы используете команду: 

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

Выполним эту задачу.

0
Carlos Alberto P. Moura Jr.

Попробуйте директиву 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'
0
H0WARD