GNU/Linux >> Linux Esercitazione >  >> Linux

Come automatizzare i riavvii del sistema utilizzando il modulo di riavvio di Ansible

In questo articolo, tratterò come utilizzare Ansible per riavviare in modo efficiente una macchina Linux o Windows. Ansible reboot il modulo è stato introdotto in Ansible 2.7 (2018) e ora questo modulo fa parte di ansible-base e incluso in tutte le installazioni Ansible. Tieni presente che il reboot il modulo deve essere eseguito dal nodo del controller Ansible e non funzionerà con nodi come localhost.

Perché è necessario riavviare un nodo gestito?

Il riavvio di un sistema operativo Linux è molto raro. Nella maggior parte dei casi, possiamo ottenere il risultato desiderato riavviando o ricaricando i singoli servizi dopo le modifiche alla configurazione o gli aggiornamenti dei pacchetti. Ma in alcuni casi, come l'applicazione di patch o un aggiornamento del sistema, è necessaria un'operazione di riavvio per completare l'intero flusso di lavoro e l'effetto. Se utilizzi Ansible per la gestione, devi includere questa attività di riavvio per ottenere l'automazione completa.

I riavvii automatici sono molto semplici in Ansible poiché hai più metodi per eseguire un'attività di riavvio del sistema.

Prerequisiti

Assicurati di utente_remoto— che stai usando per Ansible per accedere al nodo gestito—ha sudo l'accesso e l'autorizzazione per riavviare il nodo.

Il buon vecchio metodo:riavvia il comando e attendi

In passato, riavviavamo un nodo gestito utilizzando Ansible con un metodo in due passaggi. (Ci sono molti modi, ma questo metodo è una pratica comune):

  1. Attiveremo un comando di riavvio usando la shell modulo.
  2. Utilizzeremo un wait_for_connection modulo per verificare che il nodo torni online dopo un riavvio.

Lascia che ti mostri un esempio.

Il primo compito è una semplice shell modulo per riavviare la macchina e Ansible si disconnetterà dal nodo. Nella prossima attività, Ansible attenderà che il nodo torni online ma con un timeout di 300 secondi o cinque minuti.

- name: Reboot the machine
  shell: "sleep 5 && reboot"

  async: 1
  poll: 0

- name: Wait for the machine to come back online
  wait_for_connection:
    connect_timeout: 60
    sleep: 5
    delay: 5
    timeout: 300

Abbastanza semplice vero? Aspetta, c'è un metodo migliore e più efficiente con il reboot di Ansible modulo e puoi raggiungere l'obiettivo con una singola attività.

[ Potresti anche divertirti a leggere: Introduzione al nuovo Ansible Automation Hub ]

Il nuovo ed efficiente metodo:riavvia utilizzando il modulo di riavvio Ansible

Ansible reboot il modulo è stato introdotto in Ansible 2.7 (nel 2018) e ora questo modulo fa parte di ansible-base e incluso in tutte le installazioni Ansible. I prerequisiti sono gli stessi, ma hai solo bisogno di un semplice compito con un reboot modulo. Ansible reboot il modulo si occuperà del riavvio dei sistemi o del nodo gestito, attenderà che il sistema si arresti, torni online e risponda ai comandi.

Puoi semplicemente riavviare la macchina senza opzioni aggiuntive.

- name: Reboot the machine with all defaults options
  reboot:

Ci sono opzioni come reboot_timeout per l'attesa di un timeout o pre_reboot_delay , che attenderà il numero di secondi specificato prima del riavvio. Fare riferimento alla documentazione di Ansible Reboot Module per i dettagli.

Quindi ecco il nostro playbook con un'attività di riavvio. Puoi vedere che è molto semplice e facile da gestire.

---
- name: Linux Reboot Demo
  hosts: rhel7-base
  gather_facts: no
  remote_user: devops
  become: true
 
  tasks:
    - name: Reboot the machine (Wait for 5 min)
      reboot:
        reboot_timeout: 300

Note importanti

Se il tuo utente_remoto è configurato con un sudo password, assicurati di aggiungere -K argomento e inserisci sudo parola d'ordine. Ecco un esempio:

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K

Se stai usando Ansible Tower, aggiungi il sudo password nell'interfaccia Credenziali come mostrato qui:

Proviamo il playbook.

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password: 
 
PLAY [Linux Reboot Demo] ************************************************************************************
 
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
 
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local       : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    

Riavvio di una macchina Windows

Che ne dici di riavviare le macchine Windows? Come sai, puoi gestire le macchine Windows utilizzando Ansible e questa attività di riavvio sarà necessaria come parte del tuo flusso di lavoro di automazione.

La buona notizia è che, come qualsiasi altra alternativa a Windows, esiste un Ansible win_reboot dedicato modulo per gestire questa attività. Ecco come appare l'impostazione:

- name: Reboot a Windows Machine
  ansible.windows.win_reboot:
    reboot_timeout: 360

Fare riferimento alla documentazione del modulo Ansible win_reboot per i dettagli.

[ Una guida gratuita di Red Hat:5 passaggi per automatizzare il tuo business. ] 

Concludi

Usando reboot o win_reboot modulo in Ansible è abbastanza semplice e l'hai già imparato. Assicurati di avere le corrette attività di pre-riavvio (riavvia solo se necessario) e post-riavvio (per verificare il servizio o la configurazione dopo il riavvio) nel tuo playbook Ansible come richiesto.

Riferimenti:

  • Riavvio responsabile
  • Ansible win_reboot

Linux
  1. 10 moduli Ansible per l'automazione del sistema Linux

  2. Output dell'"ultimo" comando?

  3. Come verificare se il sistema richiede un riavvio

  4. Come riavviare Linux utilizzando la riga di comando

  5. Come ottenere il sistema operativo corrente in MSBuild?

Come scoprire chi ha riavviato il sistema Linux e quando

Come riavviare CentOS 8

Come automatizzare l'installazione e la distribuzione di Podman utilizzando Ansible

Come riavviare Debian usando la riga di comando

Come gestire i log di sistema utilizzando Webmin

Come utilizzare il comando fd sul sistema Linux