Puncte:0

Ansible: Cum forțați procesul de ucidere și cum ieșiți din ansible-playbook dacă nu reușește?

drapel cn

Am două sarcini de mai jos ca parte din manualul meu

      - nume: „Verificați că httpd.service nu rulează pe nodul {{ ansible_hostname }}”
        shell: "ps -ef | grep httpd"
        înregistrare: _ps_httpd
        deveni: adevărat
      - nume: stop httpd este codul de ieșire egal cu 0
        shell: "kill -9 $(ps -ef | grep httpd| awk '{print $2}')"
        când: _ps_httpd.rc == 0
        deveni: adevărat
        ignore_errors: adevărat

Aceste două sarcini ar trebui să forțeze procesul de ucidere. Momentan primesc eroarea

"msg": "cod returnat diferit de zero", "rc": -9

Ce imi lipseste aici? Ai idee cum să rezolv asta?

În plus, aș dori să adaug și opțiunea de ieșire din ansible-playbook rulați dacă nu reușește.

Puncte:0
drapel ca

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?.

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.