summaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
authorDaniele Sluijters <daenney@users.noreply.github.com>2015-04-14 17:25:40 +0200
committerDaniele Sluijters <daenney@users.noreply.github.com>2015-04-14 17:25:40 +0200
commit886245f2cb7614a8c749d34e6f08ee17b92c970f (patch)
tree942f955f9ad8717c2b46aff8721e84f9b678af5d /manifests
Initial commit (this is not finished).
Diffstat (limited to 'manifests')
-rw-r--r--manifests/init.pp69
-rw-r--r--manifests/params.pp50
2 files changed, 119 insertions, 0 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
new file mode 100644
index 0000000..414abe2
--- /dev/null
+++ b/manifests/init.pp
@@ -0,0 +1,69 @@
+class unattended_upgrades (
+ $age = {},
+ $auto = {},
+ $backup = {},
+ $blacklist = [],
+ $dl_limit = undef,
+ $enable = 1,
+ $install_on_shutdown = false,
+ $legacy_origin = $::unattended_upgrades::params::legacy_origin,
+ $mail = {},
+ $minimal_steps = true,
+ $origins = $::unattended_upgrades::params::origins,
+ $package_ensure = installed,
+ $size = {},
+ $update = 1,
+ $upgrade = 1,
+ $upgradeable_packages = {},
+ $verbose = 0,
+) inherits ::unattended_upgrades::params {
+
+ include ::apt
+ Class['apt'] -> Class['unattended_upgrades']
+
+ validate_bool(
+ $install_on_shutdown,
+ $legacy_origin,
+ $minimal_steps,
+ )
+ validate_array($blacklist)
+ validate_array($origins)
+ validate_hash($auto)
+ $_auto = merge($auto, $::unattended_upgrades::default_auto)
+ validate_hash($mail)
+ if $mail['only_on_error'] {
+ validate_bool($mail['only_on_error'])
+ }
+ $_mail = merge($mail, $::unattended_upgrades::default_mail)
+ validate_hash($backup)
+ $_backup = merge($backup, $::unattended_upgrades::default_backup)
+ validate_hash($age)
+ $_age = merge($age, $::unattended_upgrades::default_age)
+ validate_hash($size)
+ $_size = merge($size, $::unattended_upgrades::default_size)
+ validate_hash($upgradeable_packages)
+ $_upgradeable_packages = merge($upgradeable_packages, $::unattended_upgrades::upgradeable_packages)
+
+ package { 'unattended-upgrades':
+ ensure => $package_ensure,
+ }
+
+ apt::conf { 'unattended-upgrades':
+ priority => 50,
+ content => template("${module_name}/unattended-upgrades.erb"),
+ require => Package['unattended-upgrades'],
+ }
+
+ apt::conf { 'periodic':
+ priority => 10,
+ content => template("${module_name}/periodic.erb"),
+ require => Package['unattended-upgrades'],
+ }
+
+ apt::conf { 'auto-upgrades':
+ ensure => absent,
+ priority => 20,
+ require => Package['unattended-upgrades'],
+ }
+
+}
diff --git a/manifests/params.pp b/manifests/params.pp
new file mode 100644
index 0000000..49aec20
--- /dev/null
+++ b/manifests/params.pp
@@ -0,0 +1,50 @@
+class unattended_upgrades::params {
+
+ if $::osfamily != 'Debian' {
+ fail('This module only works on Debian or derivatives like Ubuntu')
+ }
+
+ $default_auto = { 'fix_interrupted_dpkg' => true, 'remove' => true, 'reboot' => false, 'clean' => 0, }
+ $default_mail = { 'only_on_errors' => true, 'to' => undef, }
+ $default_backup = { 'archive_interval' => 0, 'level' => 3, }
+ $default_age = { 'min' => 2, 'max' => 0, }
+ $default_size = { 'max' => 0, }
+ $default_upgradeable_packages = { 'download_only' => 0, 'debdelta' => 1, }
+
+ # Strict variables facts lookup compatibility
+ $xfacts = {
+ 'lsbdistid' => defined('$lsbdistid') ? {
+ true => $::lsbdistid,
+ default => undef,
+ },
+ 'lsbdistcodename' => defined('$lsbdistcodename') ? {
+ true => $::lsbdistcodename,
+ default => undef,
+ },
+ }
+
+ case $xfacts['lsbdistid'] {
+ 'debian': {
+ case $xfacts['lsbdistcodename'] {
+ 'squeeze': {
+ $legacy_origin = true
+ $origins = ['${distro_id} oldstable', #lint:ignore:single_quote_string_with_variables
+ '${distro_id} ${distro_codename}-security', #lint:ignore:single_quote_string_with_variables
+ '${distro_id} ${distro_codename}-lts',] #lint:ignore:single_quote_string_with_variables
+ }
+ default: {
+ $legacy_origin = false
+ $origins = ['origin=Debian,archive=stable,label=Debian-Security']
+ }
+ }
+ }
+ 'ubuntu': {
+ $legacy_origin = true
+ $origins = ['${distro_id} {$distro_codename}-security', #lint:ignore:single_quote_string_with_variables
+ '${distro_id} {$distro_codename}-updates',] #lint:ignore:single_quote_string_with_variables
+ }
+ default: {
+ fail('Please explicitly specify unattended_upgrades::legacy_origin and unattended_upgrades::origins')
+ }
+ }
+}