apt: Allow managing of preferences file.
We already had a feature to manage and purge entries in preferences.d but not the preferences file in /etc/apt. This commit adds that capability. Fixes #199
This commit is contained in:
parent
738ef15316
commit
2ca97c8210
3 changed files with 110 additions and 1 deletions
|
@ -29,6 +29,7 @@ class apt(
|
|||
$proxy_port = '8080',
|
||||
$purge_sources_list = false,
|
||||
$purge_sources_list_d = false,
|
||||
$purge_preferences = false,
|
||||
$purge_preferences_d = false,
|
||||
$update_timeout = undef
|
||||
) {
|
||||
|
@ -36,13 +37,21 @@ class apt(
|
|||
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,
|
||||
|
@ -75,6 +84,15 @@ class apt(
|
|||
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,
|
||||
|
|
|
@ -175,6 +175,50 @@ describe 'apt class' do
|
|||
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
|
||||
|
|
|
@ -18,6 +18,10 @@ describe 'apt', :type => :class do
|
|||
:purge_sources_list => true,
|
||||
:purge_sources_list_d => true,
|
||||
},
|
||||
{
|
||||
:purge_preferences => true,
|
||||
:purge_preferences_d => true,
|
||||
},
|
||||
{
|
||||
:disable_keys => false
|
||||
}
|
||||
|
@ -85,6 +89,49 @@ describe 'apt', :type => :class do
|
|||
})
|
||||
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({
|
||||
|
|
Loading…
Reference in a new issue