Puncte:1

Executarea unei sarcini dintr-un manual folosind etichete

drapel cn

Am un manual cu mai multe sarcini pentru pornirea/oprirea mașinilor. Am încercat să folosesc etichete pentru a rula o singură sarcină „pentru a porni VM” folosind comanda ansible run.yaml --tags on dar aruncă EROARE! etichetele trebuie specificate ca o listă. Vă rog să-mi spuneți unde am făcut greșeala. Mulțumiri

---
- gazde: lista
  gather_facts: nu
  sarcini:
  - nume: start
    comanda: >
            virsh start {{ inventory_hostname }}
    etichete: activat
    delegate_to: inv
- gazde: oprit
  gather_facts: nu
  sarcini:
  - nume: stop vm
    comanda: >
            virsh shutdown --domain {{ inventory_hostname }}
    delegate_to: inv
    etichete: oprit
Puncte:2
drapel br

Problema este că în Ansible pe este evaluat ca boolean Adevărat și oprit este evaluat ca boolean Fals. Vedea Testarea adevărului. De exemplu

    - depanare:
        msg: „{{ my_tag }} este adevărat {{ my_tag is true }}”
      vars:
        eticheta_mea: activată

  msg: Adevărat este adevărat Adevărat

Când utilizați boolean într-o etichetă, de ex.

    - depanare:
        mesaj: eticheta activata
      etichete: activat

Ansible se plânge

EROARE! etichetele trebuie specificate ca o listă

Această eroare este înșelătoare. De fapt, Ansible se plânge de tipul de date. Soluția este simplă. Nu utilizați boolean ca etichetă, de ex. sarcina de mai jos funcționează conform așteptărilor

    - depanare:
        mesaj: etichetați my_on
      Etichete: my_on

shell> ansible-playbook playbook.yml --tags my_on
...
  mesaj: etichetați my_on

Puteți utiliza o listă în etichete. Dar, dacă puneți un șir în etichete, acesta va fi interpretat ca un singur element dintr-o listă. Vedea Etichete.

ranji avatar
drapel cn
Mulțumiri! A mers
Puncte:0
drapel br

Exact așa cum spune mesajul de eroare, încercați în schimb:

---
- gazde: von
  gather_facts: nu
  sarcini:
  - nume: start vm
    comanda: >
            virsh start {{ inventory_hostname }}
    Etichete: 
    - pe
    delegate_to: sou
- gazde: voff
  gather_facts: nu
  sarcini:
  - nume: stop vm
    comanda: >
            virsh shutdown --domain {{ inventory_hostname }}
    delegate_to: sou
    Etichete: 
    - oprit

Fără a încerca codul, bănuiesc că ar putea fi nevoie să puneți comanda virsh între ghilimele (") pentru ca substituția variabilei j2 să funcționeze.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.