我想从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使整个目录保持同步