The problem I'm facing is that the sanity checks prevent one from
using a simple:
apt::preferences_snippet { "bla": ensure => absent }
So, first set a default value for the `priority' parameter, so
that it's not required anymore. Second, add a sanity check to
error out when priority is not set, to get the safe old behaviour.
Then, wrap all sanity checks about arguments within
a "if $ensure == 'present'" block.
Before, including apt::unattended_upgrades on a host without
the unattended-upgrades package would fail on the first run,
because the module tries to install the package before apt is
finally configured.
This commit does:
- introduce the option $refresh_apt for apt::apt_conf
(Defaults to true). Can be used to not trigger Exec['refresh_apt']
- install the unattended-upgrades package after a final
Exec['refresh_apt']. To not run into a loop, it calls
Apt_conf['50unattended-upgrades'] with the option
refresh_apt => false, which is also not needed for the configuration
looks for a template based on the $lsbdistcodename, so you get this error:
Could not find template 'apt/Debian/preferences_n/a.erb'
The slash in 'n/a' appears to be a path (confusing!)
So I've set an error message when 'n/a' is encountered, encouraging the user to set the $lsbdistcodename.
I was not confident in the idea of pointing any occurrence of 'n/a' to the sid
templates, as I could imagine a case where this might occur on a non-sid system
where the lsbdistcodename isn't properly detected
The syntax is valid from v0.70 on (Debian Wheezy, Ubuntu Oneiric
and later).
It includes Unattended-Upgrade::Origins-Patterns both for Debian
and Ubuntu, which even work on systems with both package sources
enables. On Debian- or Ubuntu-only systems it doesn't hurt to have
both Patterns included.
with a decent one for wheezy onwards. The main syntax shouldn't
change, hopefully, from now on. It's a very basic generic one,
that uses variables for Distribution/Codename and should apply
to all coming distributions.
Removed from the default 50unattended-upgrades
----------------------------------------------
- APT::Periodic::Update-Package-Lists "1";
- APT::Periodic::Unattended-Upgrade "1";
cause this is not something the unattended upgrades class should
set by default.
- APT::UnattendedUpgrades::LogDir "/var/log/";
- APT::UnattendedUpgrades::LogFile "unattended_upgrades.log";
Because we shouldn't change the default logdest by default, which
is /var/log/unattended_upgrades/*.
- Blacklist for linux-image*, because this we shouldn't blacklist
packages by default.
What happened here was the $codename = $::lsbdistcodename was removed from
init.pp and replaced with just $::lsbdistcodename whereever $codename was
used. Then in the sources.list.erb and preferences files things were changed
like this:
<pre>+### Debian current: <%= codename = scope.lookupvar('::lsbdistcodename') %>
...
-deb <%= debian_url %> <%= codename %> <%= repos %>
...
+deb <%= debian_url=scope.lookupvar('apt::debian_url') %> <%= codename %> <%= repos=scope.lookupvar('apt::repos') %>
</pre>
This meant that the codename was always set to lsbdistcodename, and you because
in newer puppet versions you cannot assign a value to a top-level facter
variable, it is not possible to change this.
Because we cannot change $lsbdistcodename, we have to fix this by allowing the
user to pass a different, non-top-level scoped variable to the class as a
parameter, which defaults to $::lsbdistcodename, so that upgrades can be
triggered.
This is documented in the README in an upgrade notice