GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo automatizar reinicios del sistema usando el módulo de reinicio de Ansible

En este artículo, cubro cómo usar Ansible para reiniciar una máquina Linux o Windows de manera eficiente. Ansible reboot El módulo se introdujo en Ansible 2.7 (2018), y ahora este módulo es parte de ansible-base e incluido en todas las instalaciones de Ansible. Tenga en cuenta que el reboot el módulo debe ejecutarse desde el nodo del controlador Ansible y no funcionará con nodos como localhost.

¿Por qué necesita reiniciar un nodo administrado?

Reiniciar un sistema operativo Linux es muy raro. La mayoría de las veces, podemos lograr el resultado deseado reiniciando o recargando servicios individuales después de cambios de configuración o actualizaciones de paquetes. Pero en algunos casos, como parches o una actualización del sistema, se requiere una operación de reinicio para completar el flujo de trabajo y el efecto completo. Si usa Ansible para la administración, debe incluir esta tarea de reinicio para lograr la automatización completa.

Los reinicios automáticos son muy fáciles en Ansible, ya que tiene varios métodos para lograr una tarea de reinicio del sistema.

Requisitos previos

Asegúrese de que el usuario_remoto— que está utilizando para que Ansible inicie sesión en el nodo administrado, tiene sudo acceso y el permiso para reiniciar el nodo.

El buen método antiguo:reinicie el comando y espere

En el pasado, solíamos reiniciar un nodo administrado usando Ansible mediante un método de dos pasos. (Hay muchas formas, pero este método es una práctica común):

  1. Activaremos un comando de reinicio usando el shell módulo.
  2. Usaremos un wait_for_connection módulo para verificar que el nodo vuelva a estar en línea después de un reinicio.

Déjame mostrarte un ejemplo.

La primera tarea es un simple shell para reiniciar la máquina y Ansible se desconectará del nodo. En la siguiente tarea, Ansible esperará a que el nodo vuelva a estar en línea, pero con un tiempo de espera de 300 segundos o cinco minutos.

- 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

Bastante simple, ¿verdad? Espera, hay un método mejor y más eficiente con Ansible reboot módulo, y puede lograr el objetivo con una sola tarea.

[ También puede disfrutar leyendo: Presentamos el nuevo Ansible Automation Hub ]

El método nuevo y eficiente:reiniciar usando el módulo de reinicio de Ansible

Ansible reboot El módulo se introdujo en Ansible 2.7 (en 2018), y ahora este módulo es parte de ansible-base e incluido en todas las instalaciones de Ansible. Los requisitos previos son los mismos, pero solo necesita una tarea simple con reboot módulo. Ansible reboot El módulo se encargará de reiniciar los sistemas o el nodo administrado, esperar a que el sistema se apague, volver a estar en línea y responder a los comandos.

Simplemente puede reiniciar la máquina sin ninguna opción adicional.

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

Hay opciones como reboot_timeout para esperar un tiempo de espera o pre_reboot_delay , que esperará hasta el número especificado de segundos antes de reiniciar. Consulte la documentación del módulo de reinicio de Ansible para obtener más detalles.

Así que aquí está nuestro libro de jugadas con una tarea de reinicio. Puede ver que es muy simple y fácil de administrar.

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

Notas importantes

Si su usuario_remoto está configurado con un sudo contraseña, asegúrese de agregar -K argumento e ingrese el sudo clave. Aquí hay un ejemplo:

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

Si está utilizando Ansible Tower, agregue el sudo contraseña en la interfaz de Credenciales como se muestra aquí:

Probemos el libro de jugadas.

$ 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    

Reinicio de una máquina con Windows

¿Qué pasa con el reinicio de las máquinas con Windows? Como sabe, puede administrar máquinas Windows con Ansible y esta tarea de reinicio será necesaria como parte de su flujo de trabajo de automatización.

La buena noticia es que, como cualquier otra alternativa de Windows, hay un win_reboot de Ansible dedicado módulo para manejar esta tarea. Así es como se ve la configuración:

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

Consulte la documentación del módulo Ansible win_reboot para obtener más información.

[ Una guía gratuita de Red Hat:5 pasos para automatizar su negocio. ] 

Resumir

Usando reboot o win_reboot módulo en Ansible es bastante fácil, y ya lo aprendiste. Asegúrese de tener las tareas adecuadas previas al reinicio (reinicio solo si es necesario) y posteriores al reinicio (para verificar el servicio o la configuración después del reinicio) en su libro de jugadas de Ansible según sea necesario.

Referencias:

  • Reinicio de Ansible
  • Ansible win_reboot

Linux
  1. Cómo cambiar la identidad de un sistema Linux

  2. Cómo comprobar el tiempo de actividad del sistema en Linux

  3. ¿Salida del comando "último"?

  4. Cómo verificar si el sistema requiere un reinicio

  5. Cómo reiniciar Linux usando la línea de comandos

Cómo encontrar quién reinició el sistema Linux y cuándo

Cómo reiniciar CentOS 8

Cómo automatizar la instalación y la implementación de Podman con Ansible

Cómo reiniciar Debian usando la línea de comandos

Cómo administrar los registros del sistema usando Webmin

Cómo usar el comando fd en el sistema Linux