Merge pull request #55 from nanliu/tb/containment
[puppet-modules/puppetlabs-apt.git] / manifests / source.pp
1 # source.pp
2 # add an apt source
3
4 define apt::source(
5   $ensure = present,
6   $location = '',
7   $release = $lsbdistcodename,
8   $repos = 'main',
9   $include_src = true,
10   $required_packages = false,
11   $key = false,
12   $key_server = 'keyserver.ubuntu.com',
13   $key_content = false,
14   $key_source  = false,
15   $pin = false
16 ) {
17
18   include apt::params
19   include apt::update
20
21   $sources_list_d = $apt::params::sources_list_d
22   $provider       = $apt::params::provider
23
24   if $release == undef {
25     fail('lsbdistcodename fact not available: release parameter required')
26   }
27
28   file { "${name}.list":
29     ensure  => $ensure,
30     path    => "${sources_list_d}/${name}.list",
31     owner   => root,
32     group   => root,
33     mode    => '0644',
34     content => template("${module_name}/source.list.erb"),
35     notify  => Exec['apt_update'],
36   }
37
38   if ($pin != false) and ($ensure == 'present') {
39     apt::pin { $release:
40       priority => $pin,
41       before   => File["${name}.list"]
42     }
43   }
44
45   if ($required_packages != false) and ($ensure == 'present') {
46     exec { "Required packages: '${required_packages}' for ${name}":
47       command     => "${provider} -y install ${required_packages}",
48       subscribe   => File["${name}.list"],
49       refreshonly => true,
50     }
51   }
52
53   # We do not want to remove keys when the source is absent.
54   if ($key != false) and ($ensure == 'present') {
55     apt::key { "Add key: ${key} from Apt::Source ${title}":
56       ensure      => present,
57       key         => $key,
58       key_server  => $key_server,
59       key_content => $key_content,
60       key_source  => $key_source,
61       before      => File["${name}.list"],
62     }
63   }
64
65   # Need anchor to provide containment for dependencies.
66   anchor { "apt::source::${name}":
67     require => Class['apt::update'],
68   }
69 }