]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/site/manifests/aptrepo.pp
try to order these a bit
[dsa-puppet.git] / modules / site / manifests / aptrepo.pp
index eb03d465121c8e6a63372b6c3dee35224d817da9..b71c5fa25c3f4289a81b889c8767de97a7cbc971 100644 (file)
@@ -1,39 +1,66 @@
-class site::aptrepo ($key = undef, $template = undef, $config = undef, $ensure = present) {
+define site::aptrepo ($key = undef, $keyid = undef, $template = undef, $config = undef, $ensure = present) {
 
-       if $key {
-               exec { "apt-key-update-${name}":
-                       command     => "apt-key add /etc/apt/trusted-keys.d/${name}",
-                       refreshonly => true,
-               }
+       case $ensure {
+               present: {
+                       if $key {
+                               exec { "apt-key-update-${name}":
+                                       command     => "apt-key add /etc/apt/trusted-keys.d/${name}.asc",
+                                       stage       => setup,
+                                       refreshonly => true,
+                               }
 
-               file { "/etc/apt/trusted-keys.d/${name}":
-                       source => $key,
-                       mode   => '0664',
-                       notify => Exec["apt-key-update-${name}"]
+                               file { "/etc/apt/trusted-keys.d/${name}.asc":
+                                       source => $key,
+                                       mode   => '0664',
+                                       stage  => setup,
+                                       notify => Exec["apt-key-update-${name}"]
+                               }
+                       }
                }
+               absent:  {
+                       if ($keyid) and ($key) {
+                               file { "/etc/apt/trusted-keys.d/${name}.asc":
+                                       ensure => absent,
+                                       stage  => setup,
+                                       notify => Exec["apt-key-del-${keyid}"]
+                               }
+                               exec { "apt-key-del-${keyid}":
+                                       command     => "apt-key del ${keyid}",
+                                       stage       => setup,
+                                       refreshonly => true,
+                               }
+                       } elsif $key {
+                               file { "/etc/apt/trusted-keys.d/${name}.asc":
+                                       ensure => absent,
+                                       stage  => setup,
+                               }
+                       } elsif $keyid {
+                               exec { "apt-key-del-${keyid}":
+                                       command => "apt-key del ${keyid}",
+                                       stage   => setup,
+                               }
+                       }
+               }
+               default: { fail ( "Unknown ensure value: '$ensure'" ) }
        }
 
-       case $ensure {
-               present: {}
-               absent:  {}
-               default: { err ( "Unknown ensure value: '$ensure'" ) }
-       }
-
-       if ! ($template or $config) {
-               err ( "Can't find configuration for ${name}" )
+       if $ensure == present {
+               if ! ($config or $template) {
+                       fail ( "No configuration found for ${name}" )
+               }
        }
 
        if $template {
                file { "/etc/apt/sources.list.d/${name}.list":
                        ensure  => $ensure,
                        content => template($template),
-                       notify => Exec['apt-get update'],
+                       notify  => Exec['apt-get update'],
                }
        } else {
                file { "/etc/apt/sources.list.d/${name}.list":
-                       ensure => $ensure,
-                       source => $config,
-                       notify => Exec['apt-get update'],
+                       ensure  => $ensure,
+                       source  => $config,
+                       notify  => Exec['apt-get update'],
                }
        }
 }