From a30e3e70fcfd8b13b8aed2c6f7f975b824c945a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20M=E4kinen?= Date: Fri, 24 Aug 2012 12:41:39 +0300 Subject: [PATCH] Added support for ensure option into yum::repo. --- yum/manifests/init.pp | 75 ++++++++++++++++++++++---------------- yum/templates/yum.repo.erb | 2 +- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/yum/manifests/init.pp b/yum/manifests/init.pp index 540cd62..42fd6ef 100644 --- a/yum/manifests/init.pp +++ b/yum/manifests/init.pp @@ -128,6 +128,9 @@ class yum::exclude { # # $name: # Repository name. +# $ensure: +# Present/enable enables repository (default), absent removes +# repository completely and disable disables repository. # $baseurl: # Base URL for this repository. # $mirrorlist: @@ -146,45 +149,55 @@ class yum::exclude { # gpgkey => "http://tmz.fedorapeople.org/repo/RPM-GPG-KEY-tmz", # } # -define yum::repo($baseurl="", $mirrorlist="", $descr="", $gpgkey="") { +define yum::repo($ensure="present", $baseurl="", $mirrorlist="", $descr="", $gpgkey="") { tag("bootstrap") - if !$baseurl and !$mirrorlist { - fail("Either \$baseurl or \$mirrorlist needs to be defined for yum::repo") - } - if $baseurl and $mirrorlist { - fail("Cannot set both \$baseurl and \$mirrorlist for yum::repo") - } + # can't use ensure variable inside template :( + $status = $ensure - if regsubst($gpgkey, "^(puppet://).*", '\1') == "puppet://" { - file { "/etc/pki/rpm-gpg/RPM-GPG-KEY-${name}": - ensure => present, - source => $gpgkey, - mode => "0644", - owner => "root", - group => "root", - before => File["/etc/yum.repos.d/${name}.repo"], - notify => Exec["rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-${name}"], - } - exec { "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-${name}": - path => "/bin:/usr/bin:/sbin:/usr/sbin", - user => "root", - refreshonly => true, - } - $gpgkey_real = "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-${name}" - } else { - $gpgkey_real = $gpgkey - } + if $status != "absent" { + + if !$baseurl and !$mirrorlist { + fail("Either \$baseurl or \$mirrorlist needs to be defined for yum::repo") + } + if $baseurl and $mirrorlist { + fail("Cannot set both \$baseurl and \$mirrorlist for yum::repo") + } + + if regsubst($gpgkey, "^(puppet://).*", '\1') == "puppet://" { + file { "/etc/pki/rpm-gpg/RPM-GPG-KEY-${name}": + ensure => present, + source => $gpgkey, + mode => "0644", + owner => "root", + group => "root", + before => File["/etc/yum.repos.d/${name}.repo"], + notify => Exec["rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-${name}"], + } + exec { "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-${name}": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + user => "root", + refreshonly => true, + } + $gpgkey_real = "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-${name}" + } else { + $gpgkey_real = $gpgkey + } + + if $descr { + $descr_real = $descr + } else { + $descr_real = $name + } - if $descr { - $descr_real = $descr - } else { - $descr_real = $name } file { "/etc/yum.repos.d/${name}.repo": - ensure => present, + ensure => $status ? { + "absent" => absent, + default => present, + }, content => template("yum/yum.repo.erb"), mode => "0644", owner => "root", diff --git a/yum/templates/yum.repo.erb b/yum/templates/yum.repo.erb index 1d5424c..cd05fe8 100644 --- a/yum/templates/yum.repo.erb +++ b/yum/templates/yum.repo.erb @@ -1,6 +1,6 @@ [<%= name %>] name=<%= descr_real %> -enabled=1 +enabled=<% if status == 'disable' %>0<% else %>1<% end %> <% if baseurl != '' -%> baseurl=<%= baseurl %> <% else -%>