]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/site/manifests/aptrepo.pp
try to order these a bit
[dsa-puppet.git] / modules / site / manifests / aptrepo.pp
1 define site::aptrepo ($key = undef, $keyid = undef, $template = undef, $config = undef, $ensure = present) {
2
3         case $ensure {
4                 present: {
5                         if $key {
6                                 exec { "apt-key-update-${name}":
7                                         command     => "apt-key add /etc/apt/trusted-keys.d/${name}.asc",
8                                         stage       => setup,
9                                         refreshonly => true,
10                                 }
11
12                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
13                                         source => $key,
14                                         mode   => '0664',
15                                         stage  => setup,
16                                         notify => Exec["apt-key-update-${name}"]
17                                 }
18                         }
19                 }
20                 absent:  {
21                         if ($keyid) and ($key) {
22                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
23                                         ensure => absent,
24                                         stage  => setup,
25                                         notify => Exec["apt-key-del-${keyid}"]
26                                 }
27                                 exec { "apt-key-del-${keyid}":
28                                         command     => "apt-key del ${keyid}",
29                                         stage       => setup,
30                                         refreshonly => true,
31                                 }
32                         } elsif $key {
33                                 file { "/etc/apt/trusted-keys.d/${name}.asc":
34                                         ensure => absent,
35                                         stage  => setup,
36                                 }
37                         } elsif $keyid {
38                                 exec { "apt-key-del-${keyid}":
39                                         command => "apt-key del ${keyid}",
40                                         stage   => setup,
41                                 }
42                         }
43                 }
44                 default: { fail ( "Unknown ensure value: '$ensure'" ) }
45         }
46
47         if $ensure == present {
48                 if ! ($config or $template) {
49                         fail ( "No configuration found for ${name}" )
50                 }
51         }
52
53         if $template {
54                 file { "/etc/apt/sources.list.d/${name}.list":
55                         ensure  => $ensure,
56                         content => template($template),
57                         notify  => Exec['apt-get update'],
58                 }
59         } else {
60                 file { "/etc/apt/sources.list.d/${name}.list":
61                         ensure  => $ensure,
62                         source  => $config,
63                         notify  => Exec['apt-get update'],
64                 }
65         }
66 }