define apt::conf (
+ $ensure = present,
$priority = '50',
$content
) {
$apt_conf_d = $apt::params::apt_conf_d
file { "${apt_conf_d}/${priority}${name}":
- ensure => file,
+ ensure => $ensure,
content => $content,
owner => root,
group => root,
# pin a release in apt, useful for unstable repositories
define apt::pin(
+ $ensure = present,
$packages = '*',
$priority = 0
) {
$preferences_d = $apt::params::preferences_d
file { "${name}.pref":
- ensure => file,
+ ensure => $ensure,
path => "${preferences_d}/${name}",
owner => root,
group => root,
# add an apt source
define apt::source(
+ $ensure = present,
$location = '',
$release = $lsbdistcodename,
$repos = 'main',
}
file { "${name}.list":
- ensure => file,
+ ensure => $ensure,
path => "${sources_list_d}/${name}.list",
owner => root,
group => root,
content => template("${module_name}/source.list.erb"),
}
- if $pin != false {
+ if ($pin != false) and ($ensure == 'present') {
apt::pin { $release:
priority => $pin,
before => File["${name}.list"]
refreshonly => true,
}
- if $required_packages != false {
+ if ($required_packages != false) and ($ensure == 'present') {
exec { "Required packages: '${required_packages}' for ${name}":
command => "${provider} -y install ${required_packages}",
subscribe => File["${name}.list"],
}
}
- if $key != false {
+ # We do not want to remove keys when the source is absent.
+ if ($key != false) and ($ensure == 'present') {
apt::key { "Add key: ${key} from Apt::Source ${title}":
ensure => present,
key => $key,
}
it { should contain_file(filename).with({
- 'ensure' => 'file',
+ 'ensure' => 'present',
'content' => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n",
'owner' => 'root',
'group' => 'root',
})
}
end
+
+ describe "when removing an apt preference" do
+ let :params do
+ {
+ :ensure => 'absent',
+ :priority => '00',
+ :content => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n"
+ }
+ end
+
+ let :filename do
+ "/etc/apt/apt.conf.d/00norecommends"
+ end
+
+ it { should contain_file(filename).with({
+ 'ensure' => 'absent',
+ 'content' => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n",
+ 'owner' => 'root',
+ 'group' => 'root',
+ 'mode' => '0644',
+ })
+ }
+ end
end
let :default_params do
{
+ :ensure => 'present',
:packages => '*',
:priority => '0'
}
end
- [{},
- {
+ [ {},
+ {
+ :packages => 'apache',
+ :priority => '1'
+ },
+ {
+ :ensure => 'absent',
:packages => 'apache',
:priority => '1'
}
it { should include_class("apt::params") }
it { should contain_file("#{title}.pref").with({
- 'ensure' => 'file',
+ 'ensure' => param_hash[:ensure],
'path' => "/etc/apt/preferences.d/#{title}",
'owner' => 'root',
'group' => 'root',
let :default_params do
{
+ :ensure => 'present',
:location => '',
:release => 'karmic',
:repos => 'main',
:key => 'key_name',
:key_server => 'keyserver.debian.com',
:key_content => false,
+ },
+ {
+ :ensure => 'absent',
+ :location => 'somewhere',
+ :release => 'precise',
+ :repos => 'security',
}
].each do |param_set|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
it { should contain_apt__params }
it { should contain_file("#{title}.list").with({
- 'ensure' => 'file',
+ 'ensure' => param_hash[:ensure],
'path' => filename,
'owner' => 'root',
'group' => 'root',