]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/site/manifests/aptrepo.pp
make site::aptrepo a proper type
[dsa-puppet.git] / modules / site / manifests / aptrepo.pp
1 define site::aptrepo (
2         $url,
3         $suite,
4         $components=[],
5         $key = undef,
6         $keyid = undef,
7         $ensure = present
8 ) {
9
10         case $ensure {
11                 present: {
12                         if $key {
13                                 exec { "apt-key-update-${name}":
14                                         command     => "apt-key add /etc/apt/trusted-keys.d/${name}.asc",
15                                         refreshonly => true,
16                                 }
17
18                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
19                                         source => $key,
20                                         mode   => '0664',
21                                         notify => Exec["apt-key-update-${name}"]
22                                 }
23                         }
24                 }
25                 absent:  {
26                         if ($keyid) and ($key) {
27                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
28                                         ensure => absent,
29                                         notify => Exec["apt-key-del-${keyid}"]
30                                 }
31                                 exec { "apt-key-del-${keyid}":
32                                         command     => "apt-key del ${keyid}",
33                                         refreshonly => true,
34                                 }
35                         } elsif $key {
36                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
37                                         ensure => absent,
38                                 }
39                         } elsif $keyid {
40                                 exec { "apt-key-del-${keyid}":
41                                         command     => "apt-key del ${keyid}",
42                                 }
43                         }
44                 }
45                 default: { fail ( "Unknown ensure value: '$ensure'" ) }
46         }
47
48         file { "/etc/apt/sources.list.d/${name}.list":
49                         ensure  => $ensure,
50                         content => template('site/aptrepo.erb'),
51                         notify => Exec['apt-get update'],
52         }
53 }