X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fsite%2Fmanifests%2Faptrepo.pp;h=e53de75cd23b3b8c547a219e26d04db6584ebc37;hb=f78c0ac2fb83426730fb99117f7656349f9cbbcc;hp=eb03d465121c8e6a63372b6c3dee35224d817da9;hpb=3eb533e5499e66423bafdedaf6c7d08ead1772de;p=mirror%2Fdsa-puppet.git diff --git a/modules/site/manifests/aptrepo.pp b/modules/site/manifests/aptrepo.pp index eb03d4651..e53de75cd 100644 --- a/modules/site/manifests/aptrepo.pp +++ b/modules/site/manifests/aptrepo.pp @@ -1,39 +1,62 @@ -class site::aptrepo ($key = undef, $template = undef, $config = undef, $ensure = present) { +define site::aptrepo ( + $url='', + $suite='', + $components=[], + $key = undef, + $keyid = 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", + 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', + notify => Exec["apt-key-update-${name}"] + } + } } + absent: { + if ($keyid) and ($key) { + file { "/etc/apt/trusted-keys.d/${name}.asc": + ensure => absent, + notify => Exec["apt-key-del-${keyid}"] + } + exec { "apt-key-del-${keyid}": + command => "apt-key del ${keyid}", + refreshonly => true, + } + } elsif $key { + file { "/etc/apt/trusted-keys.d/${name}.asc": + ensure => absent, + } + } elsif $keyid { + exec { "apt-key-del-${keyid}": + command => "apt-key del ${keyid}", + } + } + } + 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}" ) + present: { + if !($url and $suite) { + fail ( "Need both url and suite for $name" ) + } + } + default: {} } - if $template { - file { "/etc/apt/sources.list.d/${name}.list": - ensure => $ensure, - content => template($template), - notify => Exec['apt-get update'], - } - } else { - file { "/etc/apt/sources.list.d/${name}.list": - ensure => $ensure, - source => $config, - notify => Exec['apt-get update'], - } + file { "/etc/apt/sources.list.d/${name}.list": + ensure => $ensure, + content => template('site/aptrepo.erb'), + notify => Exec['apt-get update'], } }