apt: Allow managing of preferences file.
$proxy_port = '8080',
$purge_sources_list = false,
$purge_sources_list_d = false,
+ $purge_preferences = false,
$purge_preferences_d = false,
$update_timeout = undef
) {
include apt::params
include apt::update
- validate_bool($purge_sources_list, $purge_sources_list_d, $purge_preferences_d)
+ validate_bool($purge_sources_list, $purge_sources_list_d,
+ $purge_preferences, $purge_preferences_d)
$sources_list_content = $purge_sources_list ? {
false => undef,
true => "# Repos managed by puppet.\n",
}
+ $preferences_content = $purge_preferences ? {
+ false => undef,
+ true => "Explanation: Preferences managed by Puppet\n
+Explanation: We need a bogus package line because of Debian Bug #732746\n
+Package: bogus-package\n",
+ }
+
if $always_apt_update == true {
Exec <| title=='apt_update' |> {
refreshonly => false,
notify => Exec['apt_update'],
}
+ file { 'apt-preferences':
+ ensure => present,
+ path => "${root}/preferences",
+ owner => root,
+ group => root,
+ mode => '0644',
+ content => $preferences_content,
+ }
+
file { 'preferences.d':
ensure => directory,
path => $preferences_d,
end
end
+ context 'purge_preferences' do
+ context 'false' do
+ it 'creates a preferences file' do
+ shell("echo 'original' > /etc/apt/preferences")
+ end
+
+ it 'should work with no errors' do
+ pp = <<-EOS
+ class { 'apt': purge_preferences => false }
+ EOS
+
+ apply_manifest(pp, :catch_failures => true)
+ end
+
+ describe file('/etc/apt/preferences') do
+ it { should be_file }
+ it 'is not managed by Puppet' do
+ shell("grep 'original' /etc/apt/preferences", {:acceptable_exit_codes => 0})
+ end
+ end
+ end
+
+ context 'true' do
+ it 'creates a preferences file' do
+ shell('touch /etc/apt/preferences')
+ end
+
+ it 'should work with no errors' do
+ pp = <<-EOS
+ class { 'apt': purge_preferences => true }
+ EOS
+
+ apply_manifest(pp, :catch_failures => true)
+ end
+
+ describe file('/etc/apt/preferences') do
+ it { should be_file }
+ it 'is managed by Puppet' do
+ shell("grep 'Explanation' /etc/apt/preferences", {:acceptable_exit_codes => 0})
+ end
+ end
+ end
+ end
+
context 'purge_preferences_d' do
context 'false' do
it 'creates a preferences file' do
:purge_sources_list => true,
:purge_sources_list_d => true,
},
+ {
+ :purge_preferences => true,
+ :purge_preferences_d => true,
+ },
{
:disable_keys => false
}
})
end
}
+ it {
+ if param_hash[:purge_preferences]
+ should create_file('apt-preferences').with({
+ :ensure => 'present',
+ :path => '/etc/apt/preferences',
+ :owner => 'root',
+ :group => 'root',
+ :mode => '0644',
+ :content => /Explanation/,
+ })
+ else
+ should create_file('apt-preferences').with({
+ :ensure => 'present',
+ :path => '/etc/apt/preferences',
+ :owner => 'root',
+ :group => 'root',
+ :mode => '0644',
+ :content => nil,
+ })
+ end
+ }
+
+ it {
+ if param_hash[:purge_preferences_d]
+ should create_file("preferences.d").with({
+ 'path' => "/etc/apt/preferences.d",
+ 'ensure' => "directory",
+ 'owner' => "root",
+ 'group' => "root",
+ 'purge' => true,
+ 'recurse' => true,
+ })
+ else
+ should create_file("preferences.d").with({
+ 'path' => "/etc/apt/preferences.d",
+ 'ensure' => "directory",
+ 'owner' => "root",
+ 'group' => "root",
+ 'purge' => false,
+ 'recurse' => false,
+ })
+ end
+ }
it {
should contain_exec("apt_update").with({