diff options
author | Daniele Sluijters <daenney@users.noreply.github.com> | 2015-04-14 17:25:40 +0200 |
---|---|---|
committer | Daniele Sluijters <daenney@users.noreply.github.com> | 2015-04-14 17:25:40 +0200 |
commit | 886245f2cb7614a8c749d34e6f08ee17b92c970f (patch) | |
tree | 942f955f9ad8717c2b46aff8721e84f9b678af5d /manifests |
Initial commit (this is not finished).
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/init.pp | 69 | ||||
-rw-r--r-- | manifests/params.pp | 50 |
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') + } + } +} |