Jakie znaczenie ma raportowanie zadania Ansible, że coś się zmieniło?

20

Mam zadanie, które sprawdza, czy mój proces nasłuchuje na porcie 8080 i tylko wtedy, gdy kod wyjścia nie jest równy zero, uruchomiłbym failkomunikat.

Gdy usługa jest uruchomiona, zgłasza, że ​​status się zmienił. Chcę to powiedzieć ok. Co tak changednaprawdę oznacza status w Ansible?

haker socgen
źródło

Odpowiedzi:

11

Wszystko, co zależy od czegoś na celu, otrzyma status „zmieniony” po wykonaniu, nawet jeśli jest to po prostu polecenie powłoki, aby coś echo.

Aby wyłączyć status „zmieniony”, możesz dodać do zadania następujący wiersz:

changed_when: false

Ta i inne istotne rzeczy są wymienione na tej stronie dokumentu programu Ansible .

wurtel
źródło
27

Odpowiednie zadania powinny być idempotentne . Na przykład. jeśli zadanie niczego nie modyfikuje, powinno zostać zwrócone okzamiast changed. Większość wbudowanych modułów i zadań już istnieje, ale w przypadku zadań takich jak commandi shelltrzeba nieco pomóc.

W przypadku zadania, które polega wyłącznie na sprawdzaniu i niczego nie modyfikuje, należy dodać:

changed_when: False
always_run: yes

Ten ostatni pozwala na uruchomienie zadania nawet w trybie sprawdzania .

Ze względu na kompletność, takie zadania są zwykle łączone z innymi, które wykonują rzeczywistą modyfikację, np .:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0
użytkownik1338062
źródło
2
to powinna zweryfikować odpowiedź
mistrz