我正在尝试使用文件资源复制文件。我的代码如下:
node 'Node-002' {
file { "/root/helloworld.txt":
ensure => file,
owner => "root",
group => "root",
mode => "0644",
source => "puppet://modules/templates/${fqdn}/hosts.erb",
}
}
但它失败了,出现以下错误
Error: /Stage[main]/Main/Node[Node-002]/File[/root/helloworld.txt]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/templates/Node-002.example.com/hosts.erb
模板位置如下:
ls -l /apps/wps/puppetlabs/code/environments/production/modules/templates/Node-002.example.com/hosts.erb
-rw-r--r-- 1 puppet puppet 462 Jul 20 02:13 /apps/wps/puppetlabs/code/environments/production/modules/templates/Node-002.wiley.com/hosts.erb
即使我在source
参数中给出了完整路径,它仍然会失败并出现相同的错误。
我正在使用 Puppet 4.5.4
请建议
答案1
您的模块似乎不符合标准目录结构。源 URL 为puppet:///modules/foo/bar.txt
,Puppet 将查找${codedir}/environments/production/modules/foo/files/bar.txt
。静态文件应位于files
模块内的子目录中。模板应位于templates
模块内的子目录中,并在file
资源中引用content => template('foo/bar.erb')
。您使用 ERB 模板作为源似乎有些令人困惑,因为无论如何都不会对其进行处理。
看https://docs.puppet.com/puppet/latest/reference/modules_fundamentals.html了解你的模块应该如何构建。