class nodo::subsystem::apt( $ensure = present, $auto_upgrade = present, $hour = 2, $minute = 0, ) { file { '/etc/apt/sources.list': ensure => present, owner => root, group => root, mode => '0644', notify => Exec['nodo-apt-auto-update'], content => $ensure ? { 'present' => template("nodo/apt/${::operatingsystem}.sources.list.erb"), default => undef, }, } # We have /var/log/dpkg.log, so we do not need to rotate /var/log/upgrade.log $log = ">> /var/log/upgrade.log 2>&1" $apt = '/usr/bin/apt-get' $command = "${apt} update ${log} && ${apt} dist-upgrade -y ${log} && ${apt} autoremove -y ${log} && ${apt} clean ${log}" exec { 'nodo-apt-auto-update': command => "${apt} update ${log}", user => "root", refreshonly => true, } cron { 'nodo-apt-auto-upgrade': ensure => $auto_upgrade, command => $command, environment => 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', user => 'root', hour => $hour, minute => $minute, } package { 'apt-transport-https': ensure => installed, } }