Browse Source

Add support for RandomSleep to 10periodic

Bryan M. Schlief 9 years ago
parent
commit
a6b560c9b4

+ 1 - 0
README.md

@@ -283,6 +283,7 @@ apt::sources:
 * `download`: How often, in days, to run `apt-get upgrade --download-only`.
 * `upgrade`: How often, in days, to upgrade packages included in the origins list.
 * `autoclean`: How often, in days, to run `apt-get autoclean`.
+* `randomsleep`: How long, in seconds, to randomly wait before applying upgrades.
 
 ### Testing
 

+ 7 - 0
manifests/unattended_upgrades.pp

@@ -28,6 +28,7 @@ class apt::unattended_upgrades (
   $remove_unused       = true,
   $auto_reboot         = false,
   $dl_limit            = 'NONE',
+  $randomsleep         = undef,
   $enable              = '1',
   $backup_interval     = '0',
   $backup_level        = '3',
@@ -48,6 +49,12 @@ class apt::unattended_upgrades (
   )
   validate_array($origins)
 
+  if $randomsleep {
+    unless is_numeric($randomsleep) {
+      fail('randomsleep must be numeric')
+    }
+  }
+
   package { 'unattended-upgrades':
     ensure => present,
   }

+ 11 - 0
spec/classes/unattended_upgrades_spec.rb

@@ -94,6 +94,14 @@ describe 'apt::unattended_upgrades', :type => :class do
       it { expect { should raise_error(Puppet::Error) } }
     end
 
+    context 'bad randomsleep' do
+      let :params do
+        {
+          'randomsleep' => '4ever'
+        }
+      end
+      it { expect { should raise_error(Puppet::Error) } }
+    end
   end
 
   context 'defaults' do
@@ -123,6 +131,7 @@ describe 'apt::unattended_upgrades', :type => :class do
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Unattended-Upgrade "1";}}
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::AutocleanInterval "7";}}
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Verbose "0";}}
+    it { is_expected.to_not contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::RandomSleep}}
   end
 
   context 'anything but defaults' do
@@ -157,6 +166,7 @@ describe 'apt::unattended_upgrades', :type => :class do
         'remove_unused'       => false,
         'auto_reboot'         => true,
         'dl_limit'            => '70',
+        'randomsleep'         => '1799',
       }
     end
 
@@ -183,6 +193,7 @@ describe 'apt::unattended_upgrades', :type => :class do
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Unattended-Upgrade "0";}}
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::AutocleanInterval "0";}}
     it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Verbose "1";}}
+    it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::RandomSleep "1799";}}
 
   end
 end

+ 3 - 0
templates/10periodic.erb

@@ -10,3 +10,6 @@ APT::Periodic::Download-Upgradeable-Packages-Debdelta "<%= @download_delta %>";
 APT::Periodic::Unattended-Upgrade "<%= @upgrade %>";
 APT::Periodic::AutocleanInterval "<%= @autoclean %>";
 APT::Periodic::Verbose "<%= @verbose %>";
+<%- unless @randomsleep.nil? -%>
+APT::Periodic::RandomSleep "<%= @randomsleep %>";
+<%- end -%>