通过Puppet删除目录的非托管文件

时间:2017-06-23 12:48:03

标签: puppet

我已经制作了一个小模块,可以在hiera中为php-fpm创建池,并将它们保存在/etc/php5/fpm.d/中的节点上。 每个节点(以及pool.conf文件)都是由Puppet中的资源生成的。

我的hiera看起来像这样

phpfpm::pools:
  poolname:
    listen: '127.0.0.1:9000'
    some:   'other'
  anotherpoolname:
    listen: '127.0.0.1:9001'
    other:  'value'

现在,我遇到的问题是我不知道如何自动移动所有文件,这些文件还没有被木偶创建。例如。如果用户在/etc/php5/fpm.d/中创建了一个新的conf文件,那么它应该被puppet删除。

我已尝试在模块中清除,但它会删除除将在当前资源中创建的文件之外的所有文件。

有任何建议吗?

1 个答案:

答案 0 :(得分:3)

我不确定我是否了解您的代码是如何工作的,但我认为您需要执行类似于此处清除yum.repos.d目录的操作:

Hiera:

profile::base::yum::repos:
  'C7.0.1406-base':
    ensure: 'present'
    baseurl: 'http://vault.centos.org/7.0.1406/os/$basearch/'
    descr: 'CentOS-7.0.1406 - Base'
    enabled: '0'
    gpgcheck: '1'
    gpgkey: 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'
  'C7.0.1406-centosplus':
    ensure: 'present'
    baseurl: 'http://vault.centos.org/7.0.1406/centosplus/$basearch/'
    descr: 'CentOS-7.0.1406 - CentOSPlus'
    enabled: '0'
    gpgcheck: '1'
    gpgkey: 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'

清单:

class profile::base::yum (
  Hash [String, Hash[String, String]] $repos,
) {
  Yumrepo {
    stage => 'pre',
  }
  create_resources(yumrepo, $repos)

  # Since we must purge the file resources in
  # /etc/yum.repos.d/, we must also declare the 
  # associated files to prevent them also
  # being purged.

  keys($repos).each |String $yumrepo| {
    file { "/etc/yum.repos.d/${yumrepo}.repo": }
    ->
    Yumrepo[$yumrepo]
  }
  file { '/etc/yum.repos.d/':
    ensure  => directory,
    recurse => true,
    purge   => true,
  }
}