racqspace.unattended_upgrades

Rol de Ansible: actualizaciones_no_atendidas

MIT Estado del flujo de trabajo de GitHub Último commit de GitHub Fecha de lanzamiento de GitHub Mantenimiento

Instala y configura actualizaciones no atendidas para Ubuntu y Debian (desde Wheezy), para instalar periódicamente actualizaciones de seguridad.

Requisitos

La función utiliza el módulo apt que tiene dependencias adicionales.

Si estableces unattended_upgrades_mail a una dirección de correo electrónico, asegúrate de que el comando mailx esté disponible y de que tu sistema pueda enviar correos electrónicos.

La función requiere la versión 0.70 y superior de las actualizaciones no atendidas, disponible desde Debian Wheezy y Ubuntu 12.04 respectivamente. Esto se debe al uso de Patrones de Origen.

Reinicio Automático

Si activas la función de reinicio automático (unattended_upgrades_automatic_reboot), la función intentará instalar el paquete update-notifier-common, que es necesario en algunos sistemas para detectar y ejecutar el reinicio después de la actualización. Opcionalmente, puedes definir un momento específico para reiniciar (unattended_upgrades_automatic_reboot_time).

Esta función estaba rota en Debian Jessie, pero finalmente se integró en el paquete de actualizaciones no atendidas.

Trabajos Cron Deshabilitados

En algunos hosts, puedes encontrar que el archivo cron de actualizaciones no atendidas /etc/cron.daily/apt ha sido renombrado a apt.disabled. Esto es posiblemente una decisión del proveedor para ahorrar ciclos de CPU. Usa la función enable-standard-cronjobs para volver a habilitar las actualizaciones no atendidas.

Variables de la Función

principal

  • unattended_upgrades_cache_valid_time: Actualiza la caché de apt si tiene más de la edad especificada en segundos; se pasa al módulo apt durante la instalación de paquetes.
    • Predeterminado: 3600

actualizaciones automáticas

  • unattended_upgrades_enabled: Habilitar el script de actualización/upgrade (0=deshabilitar)
    • Predeterminado: 1
  • unattended_upgrades_upgrade: Ejecutar el script de actualización de seguridad "unattended-upgrade" cada n días (0=deshabilitar)
    • Predeterminado: 1
  • unattended_upgrades_update_package_list: Hacer "apt-get update" automáticamente cada n días (0=deshabilitar)
    • Predeterminado: 1
  • unattended_upgrades_download_upgradeable: Hacer "apt-get upgrade --download-only" cada n días (0=deshabilitar)
    • Predeterminado: 0
  • unattended_upgrades_autoclean_interval: Hacer "apt-get autoclean" cada n días (0=deshabilitar)
    • Predeterminado: 7
  • unattended_upgrades_clean_interval: Hacer "apt-get clean" cada n días (0=deshabilitar)
    • Predeterminado: 0
  • unattended_upgrades_random_sleep: Definir un máximo para un intervalo aleatorio en segundos después del cual comienza el trabajo de apt (solo para sistemas sin systemd)
    • Predeterminado: 1800 (30 minutos)
  • unattended_upgrades_dl_limit: Limitar la velocidad de descarga en kB/seg utilizando la función de límite de ancho de banda de apt.
    • Predeterminado: deshabilitado

actualizaciones no atendidas

  • unattended_upgrades_origins_patterns: array de patrones de origen para determinar si el paquete puede ser instalado automáticamente; para más detalles, consulta Patrones de Origen a continuación.
    • Predeterminado para Debian: ['origin=Debian,codename=${distro_codename},label=Debian-Security']
    • Predeterminado para Ubuntu: ['origin=Ubuntu,archive=${distro_codename}-security,label=Ubuntu']
  • unattended_upgrades_package_blacklist: paquetes que no se actualizarán automáticamente
    • Predeterminado: []
  • unattended_upgrades_autofix_interrupted_dpkg: si al salir de dpkg de manera inadecuada ejecutar dpkg --force-confold --configure -a
    • Predeterminado: true
  • unattended_upgrades_minimal_steps: dividir la actualización en los trozos más pequeños posibles para que puedan ser interrumpidos con SIGUSR1.
    • Predeterminado: true
  • unattended_upgrades_install_on_shutdown: instalar todas las actualizaciones no atendidas cuando la máquina se esté apagando.
    • Predeterminado: false
  • unattended_upgrades_mail: dirección de correo electrónico para enviar información sobre actualizaciones o problemas con actualizaciones no atendidas
    • Predeterminado: false (no enviar ningún correo)
  • unattended_upgrades_mail_only_on_error: enviar correo solo en errores, de lo contrario, el correo se enviará cada vez que haya una actualización de paquete.
    • Predeterminado: false
  • unattended_upgrades_remove_unused_dependencies: realizar la eliminación automática de todas las dependencias no utilizadas después de la actualización.
    • Predeterminado: false
  • unattended_upgrades_remove_new_unused_dependencies: realizar la eliminación automática de nuevas dependencias no utilizadas después de la actualización.
    • Predeterminado: true
  • unattended_upgrades_automatic_reboot: Reiniciar automáticamente el sistema si algún paquete actualizado lo requiere, inmediatamente después de la actualización.
    • Predeterminado: false
  • unattended_upgrades_automatic_reboot_time: Reiniciar automáticamente el sistema si algún paquete actualizado lo requiere, a una hora específica (HH:MM) en lugar de inmediatamente después de la actualización.
    • Predeterminado: false
  • unattended_upgrades_update_days: Establecer los días de la semana en que se deben aplicar actualizaciones. Los días se pueden especificar como nombres abreviados o completos en local. O como enteros donde "0" es domingo, "1" es lunes, etc. Ejemplo: {"Mon";"Fri"};
    • Predeterminado: deshabilitado
  • unattended_upgrades_ignore_apps_require_restart: las actualizaciones no atendidas no actualizarán automáticamente algunos paquetes críticos que requieren reinicio tras una actualización (es decir, hay un XB-Upgrade-Requires: app-restart en su archivo debian/control). Con esta opción configurada en true, las actualizaciones no atendidas actualizarán estos paquetes independientemente de la directiva.
    • Predeterminado: false
  • unattended_upgrades_syslog_enable: Registrar eventos en syslog, lo que es útil en entornos donde los mensajes de syslog se envían a un almacenamiento central.
    • Predeterminado: false
  • unattended_upgrades_syslog_facility: Registrar eventos en la instalación de syslog especificada, o la instalación de demonios si no se especifica. Solo tendrá efecto si unattended_upgrades_syslog_enable está configurado en true.
    • Predeterminado: daemon
  • unattended_upgrades_verbose: Definir el nivel de verbosidad de APT para ejecuciones periódicas. La salida se enviará a root.
    • Opciones posibles:
      • 0: sin informe
      • 1: informe de progreso
      • 2: + salidas de comandos
      • 3: + traza activada
    • Predeterminado: 0 (sin informe)
  • unattended_upgrades_dpkg_options: Array de opciones de línea de comandos de dpkg utilizadas durante las ejecuciones de actualizaciones no atendidas, por ejemplo ["--force-confdef"], ["--force-confold"]
    • Predeterminado: []

Patrones de Origen

El Patrón de Origen es una alternativa más poderosa a la opción de Orígenes Permitidos utilizada en versiones anteriores de las actualizaciones no atendidas.

El patrón está compuesto por palabras clave específicas:

  • a,archive,suite – p. ej. stable, trusty-security (archive=stable)
  • c,component – p. ej. main, crontrib, non-free (component=main)
  • l,label – p. ej. Debian, Debian-Security, Ubuntu
  • o,origin – p. ej. Debian, Unlicensed Multimedia Packages, Ubuntu
  • n,codename – p. ej. jessie, jessie-updates, trusty (esto solo es compatible con unattended-upgrades >= 0.80)
  • site – p. ej. http.debian.net

Puedes revisar los repositorios disponibles usando apt-cache policy y depurar tu elección usando el comando unattended-upgrades -d en un sistema de destino.

Además, las actualizaciones no atendidas soportan dos macros (variables), derivadas de /etc/debian_version:

  • ${distro_id} – Nombre de la distribución instalada, p. ej. Debian o Ubuntu.
  • ${distro_codename} – Nombre clave instalado, p. ej. jessie o trusty.

Usar ${distro_codename} debería preferirse sobre usar stable o oldstable como seleccionado, ya que una vez que stable se convierte en oldstable, no se instalarán actualizaciones de seguridad en absoluto, o peor, se instalarán paquetes de una versión más nueva de la distribución por accidente. Lo mismo ocurre al actualizar tu instalación de oldstable a stable, si olvidas cambiar esto en tus patrones de origen, podrías no recibir las actualizaciones de seguridad para tu versión más nueva de la distribución. Con ${distro_codename}, ambos casos no pueden ocurrir.

Ejemplos de Uso de la Función

Ejemplo para Ubuntu, con patrones de orígenes personalizados, paquetes en la lista negra y notificación por correo electrónico:

- hosts: all
  roles:
  - role: racqspace.unattended_upgrades
    vars:
      unattended_upgrades_origins_patterns:
        - 'origin=Ubuntu,archive=${distro_codename}-security'
        - 'o=Ubuntu,a=${distro_codename}-updates'
    unattended_upgrades_package_blacklist: [cowsay, vim]
    unattended_upgrades_mail: '[email protected]'

Nota: No necesitas especificar unattended_upgrades_origins_patterns, la función usará el valor predeterminado de la distribución si la variable no está establecida.

Ejecutando Solo en Sistemas Basados en Debian

Si gestionas múltiples distribuciones con el mismo playbook, es posible que desees omitir la ejecución de esta función en sistemas que no sean Debian. Puedes usar la condición when con la función para limitar la función a sistemas particulares:

- hosts: all
  roles:
     - role: racqspace.unattended_upgrades
       when: ansible_facts['os_family'] == 'Debian'

Ejemplos de Patrones

Por defecto, solo se permiten actualizaciones de seguridad para Ubuntu y Debian. Puedes agregar más patrones para permitir que las actualizaciones no atendidas instalen más paquetes automáticamente, sin embargo, ten en cuenta que las actualizaciones automáticas importantes pueden potencialmente romper tu sistema.

Para Debian

unattended_upgrades_origins_patterns:
  - 'origin=Debian,codename=${distro_codename},label=Debian-Security' # actualizaciones de seguridad
  - 'o=Debian,codename=${distro_codename},label=Debian' # actualizaciones que incluyen actualizaciones no de seguridad
  - 'o=Debian,codename=${distro_codename},a=proposed-updates'

En Debian Wheezy, debido a que unattended-upgrades es 0.79.5, no puedes usar la directiva codename.

Tendrás que hacer coincidencias basadas en archiveros en su lugar:

unattended_upgrades_origins_patterns:
  - 'origin=Debian,a=stable,label=Debian-Security' # actualizaciones de seguridad
  - 'o=Debian,a=stable,l=Debian' # actualizaciones que incluyen actualizaciones no de seguridad
  - 'o=Debian,a=proposed-updates'

Asegúrate de leer sobre los problemas relacionados con esto en la documentación de patrones de origen anterior.

Para Ubuntu

En Ubuntu, el archivo siempre contiene el nombre clave de la distribución

unattended_upgrades_origins_patterns:
  - 'origin=Ubuntu,archive=${distro_codename}-security'
  - 'o=Ubuntu,a=${distro_codename}'
  - 'o=Ubuntu,a=${distro_codename}-updates'
  - 'o=Ubuntu,a=${distro_codename}-proposed-updates'

Para Raspbian

En Raspbian, solo es posible actualizar todos los paquetes del repositorio predeterminado, incluyendo actualizaciones no de seguridad, o no actualizar ninguno.

Actualizar todo, incluyendo actualizaciones no de seguridad:

unattended_upgrades_origins_patterns:
  - 'origin=Raspbian,codename=${distro_codename},label=Raspbian'

No puedes usar la directiva codename en Raspbian Wheezy, lo mismo que con Debian Wheezy anteriormente.

Para no instalar ninguna actualización en un host Raspbian, simplemente establece unattended_upgrades_origins_patterns a una lista vacía:

unattended_upgrades_origins_patterns: []

Licencia

MIT

Información del Autor

Esta función fue creada en 2021 por Clemens Kaserer.

Contribuciones de:

Acerca del proyecto

Configure unattended-upgrades for Debian based systems.

Instalar
ansible-galaxy install racqspace.unattended_upgrades
Licencia
mit
Descargas
1.4k
Propietario