7dee0a985f4fa96f10cf73a5efdb5f21c0e96688
[puppet-modules/puppetlabs-apt.git] / manifests / source.pp
1 # source.pp
2 # add an apt source
3
4 define apt::source(
5         $location = '',
6         $release = 'karmic',
7         $repos = 'main',
8         $include_src = true,
9         $required_packages = false,
10         $key = false,
11         $key_server = 'keyserver.ubuntu.com',
12         $pin = false
13 ) {
14
15         file { "${name}.list":
16                 ensure => file,
17                 owner => root,
18                 group => root,
19                 mode => 644,
20                 content => template("apt/source.list.erb"),
21         }
22
23         if $pin != false {
24                 apt::pin { "${release}": priority => "${pin}" }
25         }
26
27         exec { "${name} apt update":
28                 subscribe => File["${name}.list"],
29                 refreshonly => true,
30         }
31
32         if $required_packages != false {
33                         subscribe => File["${name}.list"],
34                         refreshonly => true,
35                 }
36         }
37
38         if $key != false {
39                 exec { "/usr/bin/apt-key adv --keyserver ${key_server} --recv-keys ${key}":
40                         unless => "/usr/bin/apt-key list | grep ${key}",
41                         before => File["${name}.list"],
42                 }
43         }
44   include apt::params
45
46     name => "${apt::params::root}/sources.list.d/${name}.list",
47     command => "${apt::params::provider} update",
48     exec { "${apt::params::provider} -y install ${required_packages}":
49 }