thorian93.upgrade

Rol de Ansible: Actualización


¡Sin mantenimiento! ¡Movido a colección!

Esta rol se ha movido a mi colección principal.
¡Ya no se mantiene aquí!
Visita la colección para contenido actualizado.


Este rol realiza actualizaciones en servidores Debian/Ubuntu, RHEL/CentOS, Fedora y Suse.

Características

  • Detección de reinicios y reinicio automático
  • Detección de reinicios de servicios y reinicios automáticos de servicios
  • Informes de actualización
    • vía correo
    • vía Telegram

¡Aquí hay dragones!

Las comprobaciones de reinicio y de reinicio de servicios para APT se implementan a través de needrestart. Para Fedora, se implementa a través del plugin dnf needs-restarting. Para RHEL/CentOS, se implementa a través de la herramienta needs-restarting.

El rol utiliza la salida o los códigos de retorno para decidir qué acciones tomar. Puedes configurar el comportamiento a través de las variables a continuación.

Ninguno de estos métodos es perfecto, pero funciona razonablemente bien. Es posible que desees revisar el rol antes de usarlo.

Problemas conocidos

  • Debian 11: Sin establecer ansible_python_interpreter=/usr/bin/python3 explícitamente, el módulo apt intentará instalar python-apt sobre la marcha, lo que fallará. Consulta este problema para más detalles.
  • CentOS 8: La detección de reinicios no funciona porque falta una bandera para el plugin needs-restarting de dnf. No se realizará ningún reinicio en ningún momento.
  • Fedora 32 y anteriores: La detección de reinicios de servicios no funciona ya que falta una bandera para el plugin needs-restarting de dnf. No se realizarán reinicios de servicios en ningún momento.
  • opensuse 15 y 42: Una dependencia faltante no permite la instalación de una herramienta dependiente. Hay una solución alternativa. Además, el proceso de actualización parece inestable. Aun así, listaré estas distribuciones como estables respecto a la verificación de compatibilidad de OS mencionada a continuación, ya que actualmente el rol no parece causar problemas, pero ¡ten cuidado! También siéntete libre de darme un aviso si sabes cómo arreglar esto.
  • opensuse 15 y 42: La detección de reinicios de servicios utiliza un enfoque 'a la fuerza', ya que la salida de zypper ps -s es complicada de analizar. Así que por ahora, estos sistemas simplemente se reiniciarán si se necesita reiniciar algún servicio.

Requisitos

Al usar la función de informes a través de Telegram:

collections:
- name: community.general
  version: 3.4.0

Ten en cuenta que este rol requiere acceso de root, así que ejecútalo en un playbook con become: yes de forma global, o invoca el rol en tu playbook así:

- hosts: foobar
  roles:
    - role: thorian93.upgrade
      become: yes

Además, este rol solo verifica si el sistema está disponible en el puerto 22 después de un reinicio. Si necesitas más comprobaciones o validaciones, deberás ocuparte de eso tú mismo.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):

Variables Básicas

upgrade_packages_on_hold: []

Establece paquetes que no deseas actualizar automáticamente en espera antes de la actualización.

upgrade_unattended_reboot: true

Habilita el reinicio no atendido en caso de que sea necesario después de las actualizaciones. El valor predeterminado es true, establece en false para deshabilitar los reinicios.

upgrade_force_reboot: false

Forzar un reinicio de cada servidor independientemente del resultado de la comprobación de reinicio. El valor predeterminado es false, establece en true para habilitar los reinicios forzados.

upgrade_needrestart_disable_interaction: true

La herramienta needrestart se utiliza para determinar reinicios y reinicios de servicios necesarios. Algunas distribuciones la configuran para ejecutarse de forma interactiva por defecto, lo que rompe este rol. Por lo tanto, la configuración predeterminada es deshabilitar toda interacción. Establece esto en false para mantener la interacción habilitada. Consulta la página del manual para más detalles.

upgrade_restart_services: true

Habilita los reinicios automáticos de servicios. Esto hace que el rol reinicie servicios que necesitan reiniciarse. El valor predeterminado es true, establece en false para deshabilitar reinicios.

upgrade_restart_services_blacklist:
  - auditd.service
  - dbus.service
  - systemd-manager.service

Lista negra de servicios que no deben o no pueden ser reiniciados. La lista predeterminada se basa en la experiencia y se ha ampliado. Siéntete libre de informar sobre servicios que necesiten ser añadidos aquí.

Variables de Informes

upgrade_reporting_enable: false

Habilita la función de informes de este rol para mostrar las actualizaciones instaladas y opcionalmente escribirlas en un archivo.

upgrade_reporting_path: "."

Define dónde se deben colocar los informes. El valor predeterminado es tu directorio de trabajo actual.

upgrade_reporting_cleanup: true

Limpia los archivos de informes utilizados para enviar informes. Puede ser útil para depurar mantenerlos.

Variables de Informes vía Telegram

upgrade_reporting_telegram_enable: false

Habilita la generación de informes vía Telegram. ¡Necesitas configurar las siguientes dos variables con tus credenciales para realmente enviar mensajes a través de Telegram! Consulta la documentación del módulo para más detalles.

upgrade_telegram_token: []

Tu Token de Bot de Telegram.

upgrade_telegram_chatid: []

Tu ID de Chat de Telegram.

Variables de Informes vía Correo

upgrade_reporting_mail_enable: false

Habilita la generación de informes a través de Correo.

upgrade_reporting_mail_subject: "Informe de Rol de Actualización Ansible"

Configura el asunto del correo.

upgrade_reporting_mail_to: ""

Define el(los) destinatario(s) del correo.

upgrade_reporting_mail_from: ""

Define el remitente del correo.

upgrade_reporting_mail_host: ""

Define el servidor de correo o relay.

upgrade_reporting_mail_port: ""

Define el puerto del servidor de correo.

upgrade_reporting_mail_user:
upgrade_reporting_mail_password:

Si el servidor de correo necesita autenticación, establece un nombre de usuario y contraseña aquí. Si no se requiere autenticación, asegúrate de dejar las variables en blanco como se indica aquí. ¡No las pongas vacías como se ve arriba!

upgrade_reporting_mail_run_once: true

Si deseas enviar un correo por ejecución, establece esto en true. Si prefieres enviar un correo por host, configúralo en false.

Dependencias

Ninguna.

Compatibilidad con OS

Este rol garantiza que no se use contra sistemas operativos no soportados o no probados al verificar si el nombre de la distribución correcta y el número de versión principal están presentes en una variable dedicada llamada como <nombre-del-rol>_stable_os. Puedes encontrar la variable en el archivo de variables predeterminadas del rol en defaults/main.yml:

role_stable_os:
  - Debian 10
  - Ubuntu 18
  - CentOS 7
  - Fedora 30

Si la combinación de distribución y número de versión principal no coincide con el sistema objetivo, el rol fallará. Para permitir que el rol funcione, agrega el nombre de la distribución y el nombre de la versión principal a esa variable y estarás listo para usar. ¡Pero prueba la nueva combinación primero!

¡Agradecimientos a HarryHarcourt por esta idea!

Ejemplo de Playbook

---
- name: "Ejecutar rol."
  hosts: all
  become: yes
  roles:
    - ansible-role-upgrade

Contribuciones

No dudes en abrir problemas si encuentras errores, problemas o si ves oportunidades de mejora. También siéntete libre de contactarme en cualquier momento si quieres preguntar o discutir algo.

Descargo de responsabilidad

Este rol se proporciona TAL CUAL y no puedo garantizar que funcione como se espera, ni puedo ser responsable de ningún daño o mala configuración realizada por este rol. Estudia el rol a fondo antes de usarlo.

Licencia

MIT

Información del Autor

Este rol fue creado en 2019 por Thorian93.

Instalar
ansible-galaxy install thorian93.upgrade
Licencia
mit
Descargas
2k
Propietario
Greetings earthlings! I am a young Linux, IT and tech enthusiast and currently I am working as a checkmk consultant for Checkmk.