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