Pentru atingerea scopului în Ansible se recomandă, în general, utilizarea modulelor de service, serviciu
, sysvinit
sau systemd
. În exemplu ca
---
- gazde: localhost
deveni: da
deveni_metoda: sudo
gather_facts: da
sarcini:
- nume: Gathering Service Facts
service_facts:
- nume: asigurați-vă că serviciul este oprit
systemd:
nume: httpd
stare: oprit
activat: nu
când: ("httpd.service" în servicii)
Dacă vă place să utilizați coajă
_modul, pentru mine era nevoie de mai multă muncă.
De exemplu pentru nginx
obțineți mai întâi PID-ul corect, deoarece există un proces primar și patru procese de lucru.
- nume: Obțineți PID nginx
coajă:
cmd: "ps -C nginx -o pid --no-headers | head 1"
avertiza: fals
changed_when: fals
check_mode: false
înregistrare: nginx_pid
De asemenea, ar fi posibil să faci ceva de genul
- nume: Obțineți PID-uri nginx
coajă:
cmd: "pidof nginx"
avertiza: fals
changed_when: fals
check_mode: false
înregistrare: nginx_pids
- nume: Afișați PID-urile
depanare:
var: nginx_pids
- nume: Kill nginx
coajă:
cmd: "ucide -9 {{ nginx_pids }}"
...
In ceea ce priveste
Aș dori să adaug opțiunea de ieșire din rularea ansible-playbook dacă nu reușește.
la încheiați rularea playbook-ului ai putea folosi
- meta: end_play
când: condiția_este_îndeplinește
utilizare eșuează
_modul la
- nume: Sarcina a eșuat din cauza
eșuează:
msg: „{{ fail_message }}”
când: condiția_este_îndeplinește
sau afirma
_modul.
În ceea ce privește codul de ieșire (EC) sau codul de retur (RC), ați putea să vă uitați Cum obțin lista de coduri de ieșire (și/sau coduri de returnare) și semnificația unei comenzi/utilități?.