]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/site/manifests/aptrepo.pp
clean up aptrepo ordering
[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         case $ensure {
49                 present: {
50                         if !($url and $suite) {
51                                 fail ( "Need both url and suite for $name" )
52                         }
53                 }
54                 default: {}
55         }
56
57         file { "/etc/apt/sources.list.d/${name}.list":
58                         ensure  => $ensure,
59                         content => template('site/aptrepo.erb'),
60                         notify  => Exec['apt-get update'],
61         }
62 }