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):
- Attiveremo un comando di riavvio usando la
shell
modulo. - 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