racqspace.unattended_upgrades
Rol de Ansible: actualizaciones_no_atendidas
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
- Predeterminado:
actualizaciones automáticas
unattended_upgrades_enabled
: Habilitar el script de actualización/upgrade (0=deshabilitar)- Predeterminado:
1
- Predeterminado:
unattended_upgrades_upgrade
: Ejecutar el script de actualización de seguridad "unattended-upgrade" cada n días (0=deshabilitar)- Predeterminado:
1
- Predeterminado:
unattended_upgrades_update_package_list
: Hacer "apt-get update" automáticamente cada n días (0=deshabilitar)- Predeterminado:
1
- Predeterminado:
unattended_upgrades_download_upgradeable
: Hacer "apt-get upgrade --download-only" cada n días (0=deshabilitar)- Predeterminado:
0
- Predeterminado:
unattended_upgrades_autoclean_interval
: Hacer "apt-get autoclean" cada n días (0=deshabilitar)- Predeterminado:
7
- Predeterminado:
unattended_upgrades_clean_interval
: Hacer "apt-get clean" cada n días (0=deshabilitar)- Predeterminado:
0
- Predeterminado:
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)
- Predeterminado:
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']
- Predeterminado para Debian:
unattended_upgrades_package_blacklist
: paquetes que no se actualizarán automáticamente- Predeterminado:
[]
- Predeterminado:
unattended_upgrades_autofix_interrupted_dpkg
: si al salir de dpkg de manera inadecuada ejecutardpkg --force-confold --configure -a
- Predeterminado:
true
- Predeterminado:
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
- Predeterminado:
unattended_upgrades_install_on_shutdown
: instalar todas las actualizaciones no atendidas cuando la máquina se esté apagando.- Predeterminado:
false
- Predeterminado:
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)
- Predeterminado:
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
- Predeterminado:
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
- Predeterminado:
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
- Predeterminado:
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
- Predeterminado:
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
- Predeterminado:
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 unXB-Upgrade-Requires: app-restart
en su archivo debian/control). Con esta opción configurada entrue
, las actualizaciones no atendidas actualizarán estos paquetes independientemente de la directiva.- Predeterminado:
false
- Predeterminado:
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
- Predeterminado:
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 siunattended_upgrades_syslog_enable
está configurado entrue
.- Predeterminado:
daemon
- Predeterminado:
unattended_upgrades_verbose
: Definir el nivel de verbosidad de APT para ejecuciones periódicas. La salida se enviará a root.- Opciones posibles:
0
: sin informe1
: informe de progreso2
: + salidas de comandos3
: + traza activada
- Predeterminado:
0
(sin informe)
- Opciones posibles:
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:
[]
- 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 conunattended-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
oUbuntu
.${distro_codename}
– Nombre clave instalado, p. ej.jessie
otrusty
.
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:
Configure unattended-upgrades for Debian based systems.
ansible-galaxy install racqspace.unattended_upgrades