木偶 – 复制几个文件到目录

我想从puppet:// urls复制一些文件到代理上的一个目录。 我不确定我在这里做错了什么,但是好像木偶不喜欢这样

file { '/etc/nginx/conf.d': path => '/etc/nginx/conf.d', ensure => directory, require => File['/etc/nginx/nginx.conf'], source => ['puppet:///modules/nginx/app1.conf', 'puppet:///modules/nginx/app2.conf'], sourceselect => all, } 

这是我试图运行代理时得到的结果

错误:无法将临时文件/etc/nginx/conf.d.puppettmp_9046重命名为/etc/nginx/conf.d:是一个目录

如果我通过在模块中创build目录来改变一些东西,并将资源指向它们,它就可以工作

  mkdir module/files/app1 module/files/app2 mv module/files/app1.conf module/files/app1 mv module/files/app2.conf module/files/app2 

新的资源

  file { '/etc/nginx/conf.d': path => '/etc/nginx/conf.d', ensure => directory, require => File['/etc/nginx/nginx.conf'], source => ['puppet:///modules/nginx/app1', 'puppet:///modules/nginx/app2'], sourceselect => all, recurse => true, } 

要创build目录来复制单个文件的列表似乎有点愚蠢。

编辑

我试图在路上添加一个斜线,但是跳枪的时候以为这是解决scheme。 原因是我有我的nginx类声明在节点定义中注释掉。 尝试它,虽然我从上面得到相同的错误。

  file { '/etc/nginx/conf.d/': path => '/etc/nginx/conf.d/', ensure => directory, require => File['/etc/nginx/nginx.conf'], source => ['puppet:///modules/nginx/app1.conf', 'puppet:///modules/nginx/app2.conf'], sourceselect => all, } 

尾随/在你的目的地。

首先有几件事情:

你为什么要确保目录和内容(源参数)? 为目录创build两个资源,为目录中的两个文件创build一个资源。

它会给你一个错误,因为你正在将一个文件发送到一个目录,而不是将一个文件发送到一个目录。 一个目录只能有一个目录作为源。

所以,你可以创build单独的定义,因为你只定义了两个你想要的文件。 另一种是在模块/文件下创build一个目录,并把文件放在那里。 然后,当您执行源定义时,您指定的目录不是文件。

希望这可以帮助。 你已经执行了你自己的执行。

出什么问题了

 file { '/etc/nginx/conf.d': path => '/etc/nginx/conf.d', ensure => directory, require => File['/etc/nginx/nginx.conf'], source => 'puppet:///modules/nginx', recurse => true, } 

? 这个解决scheme使整个目录保持同步