Issue #9277 has been updated by Nan Liu.

Category set to yumrepo

The is related to #1023 and #949. Not sure if it should be considered a 
duplicate since the problem is regarding making file resource aware of other 
puppet resource rather than making yumrepo ensurable to support purging.
----------------------------------------
Bug #9277: file resource purge method is only aware of other files managed by 
puppet file resources but not other resource types
https://projects.puppetlabs.com/issues/9277

Author: Alexander Piavlo
Status: Unreviewed
Priority: Normal
Assignee: 
Category: yumrepo
Target version: 
Affected Puppet version: 
Keywords: 
Branch: 


file resource purge method is only aware of other files managed by puppet file 
resources but not other resource types

below is an example where purge is not aware of other files managed by yumrepo 
resource in the same directory


#Class to setup specific yum repos
<pre>
class ssa::yum {

  class { '::yum': }
 
  class { 'yum::epel': enable => true }
  class { 'yum::rpmforge': enable => true }
  class { 'yum::nixval': enable => true }
  class { 'yum::cloudera': enable => true }

  class { 'yum::zabbix': enable => false }
  class { 'yum::elff': enable => false }
}
</pre>


#Class which has yum::repo define
<pre>
class yum {

  file { "/etc/yum.repos.d":
    ensure  => directory,
    purge   => true,
    recurse => true,
    owner   => 'root',
    group   => 'root',
    mode    => 0755,
    source  => "puppet:///yum/yum.repos.d"
  }

  define repo ( $descr='absent', $enabled='0', $baseurl='absent',
$mirrorlist='absent', $gpgcheck='absent', $gpgkey='absent',
                $exclude='absent', $includepkgs='absent' ) {

    if $gpgkey != 'absent' and ! defined(File["${gpgkey}"]) {

      $key = "file://${gpgkey}"

      file { "${gpgkey}":
        owner  => root,
        group  => root,
        mode   => 0444,
        source => "puppet:///modules/yum${gpgkey}",
        before => Yumrepo["${name}"]
      }

      exec { "rpm --import ${gpgkey}":
        path        => "/bin:/sbin:/usr/bin:/usr/sbin",
        subscribe   => File["${gpgkey}"],
        refreshonly => true
      }

    }
    else {
      $key = 'absent'
    }

    yumrepo { "${name}":
      descr          => $descr,
      enabled        => $enabled,
      baseurl        => $baseurl,
      mirrorlist     => $mirrorlist,
      failovermethod => 'priority',
      gpgcheck       => $gpgcheck,
      gpgkey         => $key,
      exclude        => $exclude,
      includepkgs    => $includepkgs,
      require        => File["/etc/yum.repos.d"]
    }

  }

}
</pre>

#Sample class that uses yum::repo define
<pre>
class yum::epel( $enable = true ) {

  if $enable { $enabled = '1' }
  else { $enabled = '0' }

  yum::repo { "epel":
    descr      => 'Extra Packages for Enterprise Linux 5 - $basearch',
    enabled    => $enabled,
    mirrorlist => 'http://mirrors.fedoraproject.org/mirrorlist?
repo=epel-5&arch=$basearch',
    gpgcheck   => '1',
    gpgkey     => '/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL'
  }

}
</pre>

In the log below you can clearly see that puppet first purges all
managed(and unmanaged) files from the /etc/yum.repos.d
and the populates it again with same managed files. The exact same
purge/populate happens on each run.

<pre>
[root@mon1a yum.repos.d]# puppet agent --verbose --no-daemonize
notice: Starting Puppet client version 2.7.1
info: Retrieving plugin
info: Loading facts in ssa
info: Loading facts in ssa
info: Caching catalog for mon1a.internal
info: Applying configuration version '1314659756'
info: FileBucket got a duplicate file {md5}
f9994d7bb9f7daf111bcb4c2b1363017
info: /File[/etc/yum.repos.d/nixval.repo]: Filebucketed /etc/
yum.repos.d/nixval.repo to puppet with sum
f9994d7bb9f7daf111bcb4c2b1363017
notice: /File[/etc/yum.repos.d/nixval.repo]/ensure: removed
info: FileBucket got a duplicate file {md5}
7dc04195bbd206d01b59068f8742a940
info: /File[/etc/yum.repos.d/rpmforge-extras.repo]: Filebucketed /etc/
yum.repos.d/rpmforge-extras.repo to puppet with sum
7dc04195bbd206d01b59068f8742a940
notice: /File[/etc/yum.repos.d/rpmforge-extras.repo]/ensure: removed
info: FileBucket got a duplicate file {md5}
75377ca8231483ff6e7ca8f5305f1bcc
info: /File[/etc/yum.repos.d/cloudera-cdh3.repo]: Filebucketed /etc/
yum.repos.d/cloudera-cdh3.repo to puppet with sum
75377ca8231483ff6e7ca8f5305f1bcc
notice: /File[/etc/yum.repos.d/cloudera-cdh3.repo]/ensure: removed
info: FileBucket got a duplicate file {md5}
e0c282cec3ec08ec8af395429a2f1cc0
info: /File[/etc/yum.repos.d/elff.repo]: Filebucketed /etc/yum.repos.d/
elff.repo to puppet with sum e0c282cec3ec08ec8af395429a2f1cc0
notice: /File[/etc/yum.repos.d/elff.repo]/ensure: removed
info: FileBucket got a duplicate file {md5}
e797e55a1390785b478c017130821404
info: /File[/etc/yum.repos.d/danny.repo]: Filebucketed /etc/
yum.repos.d/danny.repo to puppet with sum
e797e55a1390785b478c017130821404
notice: /File[/etc/yum.repos.d/danny.repo]/ensure: removed
info: FileBucket adding {md5}c0fcc5653e77aa5c74a47c41e2ed34bb
info: /File[/etc/yum.repos.d/rpmforge.repo]: Filebucketed /etc/
yum.repos.d/rpmforge.repo to puppet with sum
c0fcc5653e77aa5c74a47c41e2ed34bb
notice: /File[/etc/yum.repos.d/rpmforge.repo]/ensure: removed
info: FileBucket got a duplicate file {md5}
e318df8a6487d6cee2c9e2ed7b046225
info: /File[/etc/yum.repos.d/epel.repo]: Filebucketed /etc/yum.repos.d/
epel.repo to puppet with sum e318df8a6487d6cee2c9e2ed7b046225
notice: /File[/etc/yum.repos.d/epel.repo]/ensure: removed
info: create new repo rpmforge in file /etc/yum.repos.d/rpmforge.repo
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/descr: descr changed '' to 'RHEL $releasever -
RPMforge.net - dag'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/mirrorlist: mirrorlist changed '' to 'http://
apt.sw.be/redhat/el5/en/mirrors-rpmforge'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/baseurl: baseurl changed '' to 'http://apt.sw.be/
redhat/el5/en/$basearch/rpmforge'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/enabled: enabled changed '' to '1'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/gpgcheck: gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/gpgkey: gpgkey changed '' to 'file:///etc/pki/rpm-
gpg/RPM-GPG-KEY-rpmforge-dag'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/exclude: exclude changed '' to 'nagios-plugins*
rrdtool* perl-rrdtool'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge]/
Yumrepo[rpmforge]/failovermethod: failovermethod changed '' to
'priority'
info: changing mode of /etc/yum.repos.d/rpmforge.repo from 600 to 644
info: create new repo rpmforge-extras in file /etc/yum.repos.d/
rpmforge-extras.repo
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/descr: descr changed '' to 'RHEL $releasever
- RPMforge.net - extras'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/mirrorlist: mirrorlist changed '' to 'http://
apt.sw.be/redhat/el5/en/mirrors-rpmforge-extras'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/baseurl: baseurl changed '' to 'http://
apt.sw.be/redhat/el5/en/$basearch/extras'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/enabled: enabled changed '' to '1'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/gpgcheck: gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Rpmforge/Yum::Repo[rpmforge-extras]/
Yumrepo[rpmforge-extras]/failovermethod: failovermethod changed '' to
'priority'
info: changing mode of /etc/yum.repos.d/rpmforge-extras.repo from 600
to 644
info: create new repo cloudera-cdh3 in file /etc/yum.repos.d/cloudera-
cdh3.repo
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/descr: descr changed '' to 'Cloudera's
Distribution for Hadoop, Version 3'
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/mirrorlist: mirrorlist changed '' to 'http://
archive.cloudera.com/redhat/cdh/3/mirrors'
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/enabled: enabled changed '' to '1'
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/gpgcheck: gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/gpgkey: gpgkey changed '' to 'file:///etc/pki/
rpm-gpg/RPM-GPG-KEY-cloudera'
notice: /Stage[main]/Yum::Cloudera/Yum::Repo[cloudera-cdh3]/
Yumrepo[cloudera-cdh3]/failovermethod: failovermethod changed '' to
'priority'
info: changing mode of /etc/yum.repos.d/cloudera-cdh3.repo from 600 to
644
info: create new repo nixval in file /etc/yum.repos.d/nixval.repo
notice: /Stage[main]/Yum::Nixval/Yum::Repo[nixval]/Yumrepo[nixval]/
descr: descr changed '' to 'Red Hat Enterprise 5 - NIXVAL - Updates'
notice: /Stage[main]/Yum::Nixval/Yum::Repo[nixval]/Yumrepo[nixval]/
baseurl: baseurl changed '' to 'http://repo.nixval.com/nixval-centos/5/
updates'
notice: /Stage[main]/Yum::Nixval/Yum::Repo[nixval]/Yumrepo[nixval]/
enabled: enabled changed '' to '1'
notice: /Stage[main]/Yum::Nixval/Yum::Repo[nixval]/Yumrepo[nixval]/
gpgcheck: gpgcheck changed '' to '0'
notice: /Stage[main]/Yum::Nixval/Yum::Repo[nixval]/Yumrepo[nixval]/
failovermethod: failovermethod changed '' to 'priority'
info: changing mode of /etc/yum.repos.d/nixval.repo from 600 to 644
info: create new repo epel in file /etc/yum.repos.d/epel.repo
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/descr:
descr changed '' to 'Extra Packages for Enterprise Linux 5 -
$basearch'
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/
mirrorlist: mirrorlist changed '' to 'http://mirrors.fedoraproject.org/
mirrorlist?repo=epel-5&arch=$basearch'
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/enabled:
enabled changed '' to '1'
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/gpgcheck:
gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/gpgkey:
gpgkey changed '' to 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL'
notice: /Stage[main]/Yum::Epel/Yum::Repo[epel]/Yumrepo[epel]/
failovermethod: failovermethod changed '' to 'priority'
info: changing mode of /etc/yum.repos.d/epel.repo from 600 to 644
info: create new repo danny in file /etc/yum.repos.d/danny.repo
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
descr: descr changed '' to 'Dan Horak's repo'
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
baseurl: baseurl changed '' to 'http://fedora.danny.cz/danny-el/
$releasever/$basearch'
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
enabled: enabled changed '' to '1'
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
gpgcheck: gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
gpgkey: gpgkey changed '' to 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
danny'
notice: /Stage[main]/Yum::Zabbix/Yum::Repo[danny]/Yumrepo[danny]/
failovermethod: failovermethod changed '' to 'priority'
info: changing mode of /etc/yum.repos.d/danny.repo from 600 to 644
info: create new repo elff in file /etc/yum.repos.d/elff.repo
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/descr:
descr changed '' to 'Enterprise Linux Fast Forward 5 - $basearch'
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/baseurl:
baseurl changed '' to 'http://download.elff.bravenet.com/5/$basearch'
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/enabled:
enabled changed '' to '0'
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/gpgcheck:
gpgcheck changed '' to '1'
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/gpgkey:
gpgkey changed '' to 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ELFF'
notice: /Stage[main]/Yum::Elff/Yum::Repo[elff]/Yumrepo[elff]/
failovermethod: failovermethod changed '' to 'priority'
info: changing mode of /etc/yum.repos.d/elff.repo from 600 to 644
notice: Finished catalog run in 8.10 seconds
notice: Caught INT; calling stop
[root@mon1a yum.repos.d]#
</pre> 

The current work around was to add 

    file { "/etc/yum.repos.d/${name}.repo":
      ensure => file
    }

in the yum::repo define



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to