Stop redeclaring variables from params
[puppet-modules/puppetlabs-apt.git] / manifests / source.pp
1 # source.pp
2 # add an apt source
3
4 define apt::source(
5   $comment           = $name,
6   $ensure            = present,
7   $location          = '',
8   $release           = 'UNDEF',
9   $repos             = 'main',
10   $include_src       = true,
11   $include_deb       = true,
12   $key               = undef,
13   $key_server        = 'keyserver.ubuntu.com',
14   $key_content       = undef,
15   $key_source        = undef,
16   $pin               = false,
17   $architecture      = undef,
18   $trusted_source    = false,
19 ) {
20   validate_string($architecture)
21   validate_bool($trusted_source)
22
23   if $release == 'UNDEF' {
24     if $::lsbdistcodename == undef {
25       fail('lsbdistcodename fact not available: release parameter required')
26     } else {
27       $release_real = $::lsbdistcodename
28     }
29   } else {
30     $release_real = $release
31   }
32
33   file { "${name}.list":
34     ensure  => $ensure,
35     path    => "${::apt::sources_list_d}/${name}.list",
36     owner   => root,
37     group   => root,
38     mode    => '0644',
39     content => template('apt/_header.erb', 'apt/source.list.erb'),
40     notify  => Exec['apt_update'],
41   }
42
43
44   if ($pin != false) {
45     # Get the host portion out of the url so we can pin to origin
46     $url_split = split($location, '/')
47     $host      = $url_split[2]
48
49     apt::pin { $name:
50       ensure   => $ensure,
51       priority => $pin,
52       before   => File["${name}.list"],
53       origin   => $host,
54     }
55   }
56
57   # We do not want to remove keys when the source is absent.
58   if $key and ($ensure == 'present') {
59     apt::key { "Add key: ${key} from Apt::Source ${title}":
60       ensure      => present,
61       key         => $key,
62       key_server  => $key_server,
63       key_content => $key_content,
64       key_source  => $key_source,
65       before      => File["${name}.list"],
66     }
67   }
68
69   # Need anchor to provide containment for dependencies.
70   anchor { "apt::source::${name}":
71     require => Class['apt::update'],
72   }
73 }