From 18188cb9719565bbaa7751997258ef4ecd472bae Mon Sep 17 00:00:00 2001 From: staticsafe Date: Tue, 29 Oct 2019 10:35:22 -0400 Subject: [PATCH] Switch to using unattended-upgrades for apt-maintenance. --- .../files/50unattended-upgrades | 91 +++++++++++++++++++ ubuntu/roles/apt-maintenance/tasks/main.yml | 42 ++++----- 2 files changed, 107 insertions(+), 26 deletions(-) create mode 100644 ubuntu/roles/apt-maintenance/files/50unattended-upgrades diff --git a/ubuntu/roles/apt-maintenance/files/50unattended-upgrades b/ubuntu/roles/apt-maintenance/files/50unattended-upgrades new file mode 100644 index 0000000..0ba97e7 --- /dev/null +++ b/ubuntu/roles/apt-maintenance/files/50unattended-upgrades @@ -0,0 +1,91 @@ +// Automatically upgrade packages from these (origin:archive) pairs +// +// Note that in Ubuntu security updates may pull in new dependencies +// from non-security sources (e.g. chromium). By allowing the release +// pocket these get automatically pulled in. +Unattended-Upgrade::Allowed-Origins { + "${distro_id}:${distro_codename}"; + "${distro_id}:${distro_codename}-security"; + // Extended Security Maintenance; doesn't necessarily exist for + // every release and this system may not have it installed, but if + // available, the policy for updates is such that unattended-upgrades + // should also install from here by default. + "${distro_id}ESM:${distro_codename}"; +// "${distro_id}:${distro_codename}-updates"; +// "${distro_id}:${distro_codename}-proposed"; +// "${distro_id}:${distro_codename}-backports"; +}; + +// List of packages to not update (regexp are supported) +Unattended-Upgrade::Package-Blacklist { +// "vim"; +// "libc6"; +// "libc6-dev"; +// "libc6-i686"; +}; + +// This option will controls whether the development release of Ubuntu will be +// upgraded automatically. +Unattended-Upgrade::DevRelease "false"; + +// This option allows you to control if on a unclean dpkg exit +// unattended-upgrades will automatically run +// dpkg --force-confold --configure -a +// The default is true, to ensure updates keep getting installed +//Unattended-Upgrade::AutoFixInterruptedDpkg "false"; + +// Split the upgrade into the smallest possible chunks so that +// they can be interrupted with SIGTERM. This makes the upgrade +// a bit slower but it has the benefit that shutdown while a upgrade +// is running is possible (with a small delay) +//Unattended-Upgrade::MinimalSteps "false"; + +// Install all unattended-upgrades when the machine is shutting down +// instead of doing it in the background while the machine is running +// This will (obviously) make shutdown slower +//Unattended-Upgrade::InstallOnShutdown "true"; + +// Send email to this address for problems or packages upgrades +// If empty or unset then no email is sent, make sure that you +// have a working mail setup on your system. A package that provides +// 'mailx' must be installed. E.g. "user@example.com" +Unattended-Upgrade::Mail "s+cron@sadiqs.com"; + +// Set this value to "true" to get emails only on errors. Default +// is to always send a mail if Unattended-Upgrade::Mail is set +//Unattended-Upgrade::MailOnlyOnError "true"; + +// Remove unused automatically installed kernel-related packages +// (kernel images, kernel headers and kernel version locked tools). +//Unattended-Upgrade::Remove-Unused-Kernel-Packages "false"; + +// Do automatic removal of new unused dependencies after the upgrade +// (equivalent to apt-get autoremove) +//Unattended-Upgrade::Remove-Unused-Dependencies "false"; + +// Automatically reboot *WITHOUT CONFIRMATION* +// if the file /var/run/reboot-required is found after the upgrade +//Unattended-Upgrade::Automatic-Reboot "false"; + +// If automatic reboot is enabled and needed, reboot at the specific +// time instead of immediately +// Default: "now" +//Unattended-Upgrade::Automatic-Reboot-Time "02:00"; + +// Use apt bandwidth limit feature, this example limits the download +// speed to 70kb/sec +//Acquire::http::Dl-Limit "70"; + +// Enable logging to syslog. Default is False +// Unattended-Upgrade::SyslogEnable "false"; + +// Specify syslog facility. Default is daemon +// Unattended-Upgrade::SyslogFacility "daemon"; + +// Download and install upgrades only on AC power +// (i.e. skip or gracefully stop updates on battery) +// Unattended-Upgrade::OnlyOnACPower "true"; + +// Download and install upgrades only on non-metered connection +// (i.e. skip or gracefully stop updates on a metered connection) +// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true"; diff --git a/ubuntu/roles/apt-maintenance/tasks/main.yml b/ubuntu/roles/apt-maintenance/tasks/main.yml index 6bd1aee..4fae300 100644 --- a/ubuntu/roles/apt-maintenance/tasks/main.yml +++ b/ubuntu/roles/apt-maintenance/tasks/main.yml @@ -1,31 +1,21 @@ --- -# This task adds a daily cron job to do apt related maintenance -# Update repos, update packages, autoremove packages +# This task sets up unattended-upgrade's config -- name: Ensure /root/scripts exists - file: - path: /root/scripts - state: directory +- name: Install unattended-upgrade and apt-listchanges + apt: name={{ packages }} state=latest update_cache=yes + vars: + packages: + - unattended-upgrades + - apt-listchanges -- name: Copy cron script +- name: Copy our 50unattended-upgrades copy: - src: apt-maintenance.sh - dest: /root/scripts/apt-maintenance.sh - owner: root - group: root - mode: 0755 - backup: no + src: 50unattended-upgrades + dest: /etc/apt/apt.conf.d/50unattended-upgrades -- name: Add MAILTO cron variable - cron: - name: MAILTO - env: yes - job: s+cron@sadiqs.com - -- name: Disable apt-maintenance cronjob - cron: - name: apt-maintenance - special_time: daily - job: /root/scripts/apt-maintenance.sh - backup: yes - state: absent +- name: Ensure 20auto-upgrades has the correct values using debconf + debconf: + name: unattended-upgrades + question: unattended-upgrades/enable_auto_updates + vtype: boolean + value: true