Puppet - 如何将目录的内容移动到另一个现有目录?

时间:2016-11-01 10:57:11

标签: vagrant puppet

我的目录中包含.data个文件和.config/.config.example个文件。我需要使用puppet将所有.data文件移动到我系统上的其他现有目录中。我现在的木偶代码不正确我相信 - 我做错了什么?

file { 'Owasp .data files':
  ensure  => directory,
  path    => '/etc/nginx/',
  source  => '/usr/src/SpiderLabs-owasp-modsecurity-crs-0475e92/',
  recurse => true,
  ignore  => ['*.conf', '*.conf.example'],
}  

我希望这会将除.conf.conf.example文件之外的所有内容复制到/etc/nginx。但是,我收到以下错误:

  

框:错误:无法将文件[Owasp .data文件]别名为[" / etc / nginx"] /vagrant/modules/nginx_test/manifests/test.pp:112;资源["文件"," / etc / nginx"]已在/usr/share/puppet/modules/nginx/manifests/config.pp:193

中声明

1 个答案:

答案 0 :(得分:1)

因此,您的问题实际上是您在目录中的其他位置声明了file { '/etc/nginx': }。您只需要为每个目录声明一次该资源。这将解决您的错误。您也无法声明具有不同标题的两个文件资源,这两个标题都具有与Puppet相同的path参数,并测试该资源唯一性参数。

关于您的具体问题,您可以使用source参数中的文件URI:https://docs.puppet.com/puppet/latest/reference/type.html#file-attribute-source

所以对于你的情况,你会这样做:

file { 'Owasp .data files':
  ensure  => directory,
  path    => '/etc/nginx/',
  source  => 'file:///usr/src/SpiderLabs-owasp-modsecurity-crs-0475e92/',
  recurse => true,
  ignore  => ['*.conf', '*.conf.example'],
}