it-swarm.com.de

Wie kann ich nur ansehnliche Aufgaben mit mehreren Tags ausführen?

Stellen Sie sich dieses Spielbuch vor:

- 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

Wie kann ich nur die debug baz-Aufgabe ausführen? Ich möchte nur Aufgaben ausführen, die mit foo AND bar markiert sind. Ist das möglich?

Ich habe es versucht, aber es werden alle 3 Aufgaben ausgeführt:

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

Ansible-Tags verwenden "oder" nicht "und" als Vergleich. Ihre Lösung zum Erstellen eines weiteren Tags ist die geeignete.

23
Bruce P

Ich glaube, die korrekte Syntax lautet:

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

Wenn Sie diesen Weg verwenden: 

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

Sie haben eine Operation durchgeführt ODER Wenn Sie also den Befehl verwenden: 

ansible-playbook -i inventory test.yml --tags foo

oder

ansible-playbook -i inventory test.yml --tags bar

Führt diese Aufgabe aus.

Wenn du benutzt: 

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

Sie haben eine Operation UND durchgeführt. Also nur der Befehl: 

ansible-playbook -i inventory test.yml --tags foo, bar

Führt diese Aufgabe aus.

Versuchen Sie die Anweisung 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