Puncte:0

Ansible Playbook repornește serverul, așteptați până când repornirea este completă

drapel us

Mă confrunt cu o problemă în timp ce execut un script shell cu Ansible Playbook.
Problemă: pierd o conexiune cu serverul la distanță deoarece scriptul shell repornește serverul.

Cartea mea de joc Ansible

- nume: Handle reboot
  gazde: toate
  deveni: da
  
  sarcini:
    - nume: Executați scriptul 
      shell: bash testscript.sh
      argumente:
        chdir: /home/ubuntu
      anunta:
        - Așteptați ca serverul să se repornească
        
  manipulatori:
    - nume: așteptați ca serverul să se repornească
      local_action:
        modul: wait_for
          gazdă={{ inventory_hostname }}
          port=22
          întârziere=10
        deveni: fals

Scriptul meu shell:

#!/bin/bash
echo „Efectuarea unor sarcini”
ecou "repornind acum"
reporniți
echo "repornire finalizată"
echo „Efectuarea altor sarcini”

Eroarea pe care o primesc la repornirea serverului de la distanță

fatal: [adresa-mi-ip]: NEACCESIBIL! => {
    „schimbat”: fals,
    "msg": "Eșuat la conectarea la gazdă prin ssh: conexiune partajată la <adresa-ip-mea> închisă.",
    „inaccesibil”: adevărat
}

Este posibil să se ocupe de o repornire care se face prin script shell și să aștepte conexiunea până când serverul de la distanță este din nou pornit?

Mulțumiri.

drapel in
Există un motiv pentru a nu folosi [modulul de repornire](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/reboot_module.html)?
drapel in
Îți dai seama că comenzile din scriptul tău după `reboot` nu vor fi niciodată executate?
vik2595 avatar
drapel us
@GeraldSchneider, voi instala un instrument specific care include acești pași. Mai multe detalii despre script, este redenumirea interfeței de rețea și atribuirea unui IP specific. FYI: Nu putem schimba nimic în scriptul shell. Așa că trebuie să mă gândesc la un alt mod ca să funcționeze.
vik2595 avatar
drapel us
@GeraldSchneider se pare că se execută, vă rugăm să verificați acest script pentru mai multe detalii. https://github.com/magma/magma/blob/master/lte/gateway/deploy/agw_install_ubuntu.sh
Puncte:2
drapel in

Ar trebui să folosești aşteptaţi_pentru_conectare in schimb.

sarcini:
  - nume: Executați scriptul 
    shell: bash testscript.sh
    argumente:
      chdir: /home/ubuntu
  - nume: așteptați
    wait_for_connection:
      întârziere: 10

Aș sfătui să faceți acest lucru într-o sarcină, nu într-un handler. Handler-ul este executat numai după toate sarcinile au fost terminate, așa că dacă aveți sarcini care urmează sarcinii care execută repornirea, acestea vor fi încercate înainte ca manualul de joc să înceapă chiar să aștepte.

Alternativ, utilizați reporniți modulul, care face acest lucru automat.

vik2595 avatar
drapel us
Cu siguranță, lasă-mă să încerc această metodă.

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.