感觉自己完全是一个傀儡新手(我承认我很生疏:-)
所以我的 manifest/site.pp 文件包含。
file {"/tmp/findme.txt":
source => "puppet:///modules/concat/concatfragments.rb"
}
file { "/etc/pupppetlabs/code/":
path => "/etc/puppetlabs/code/",
source => "puppet:///modules/puppetEnv/code/",
recurse => true
}
第一个文件复制工作正常。我在 /tmp/findme.txt 中找到了该文件,但第二个文件复制(实际上是目录复制)不起作用。它得到了以下错误
==> puppetmaster: Error: /Stage[main]/Main/Node[puppetmaster]/File[/etc/pupppetlabs/code/]: Could not evaluate: Could not retrieve information from environment bootmaster source(s) puppet:///modules/puppetEnv/code
其他信息。
来自我的 Vagrantfile
pm.vm.provision "puppet" do |puppet|
# puppet.options = "--verbose --debug"
puppet.environment_path = "code/environments"
puppet.environment = "bootmaster"
end
查看 vm 上生成的 /tmp/vagrant-puppet 目录(vagrant 放置 puppet 文件的地方),一切看起来都很好。
[vagrant@puppetmaster vagrant-puppet]$ tree -d
.
├── environments
│ ├── bootmaster
│ │ ├── manifests
│ │ └── modules
│ │ ├── baseconfig
│ │ │ └── manifests
│ │ ├── concat
│ │ │ ├── files
│ │ │ ├── lib
. . .
│ │ ├── puppetEnv
│ │ │ ├── files
│ │ │ │ └── code
│ │ │ │ └── environments
│ │ │ │ └── test
│ │ │ │ ├── manifests
│ │ │ │ └── modules
答案1
您的问题看起来是路径中的尾部斜杠。
您也不需要指定,path
因为它是从资源名称继承的,并且最好明确地ensure
指出它是一个目录,以提高代码的可读性。
例子:
file { '/etc/pupppetlabs/code':
ensure => directory,
source => 'puppet:///modules/puppetEnv/code',
recurse => true,
}