鸣谢:这篇文章很大程度上基于Akumria在StackOverflow上的回答:如何从模块中获取人偶清单中的文件。
在Vagrant中启用Puppet Standalone来解决Puppet:///…
快速概述:
- 使目录以及要提供给Vagrant VM的文件可用
- 创建fileserver.conf以通知Puppet目录
- 告诉p有关fileserver.conf的信息
- 用它
1.使目录以及要提供给Vagrant VM的文件可用
例如作为共享文件夹:
# Snippet of <vagrant directory>/Vagrantfile
config.vm.share_folder "PuppetFiles", "/etc/puppet/files", "./puppet-files-symlink"
(在我的情况下,这实际上是到我们的puppet git存储库中实际文件夹的符号链接。请注意,共享文件夹内的符号链接通常不起作用,因此最好将符号链接用作独立的共享文件夹根。)
注意,您不需要声明共享文件夹
2.创建fileserver.conf以通知Puppet目录
您需要告诉Puppet应该从/ etc / puppet / files /提供源“ puppet:/// files /”:
# <vagrant directory>/fileserver.conf
[files]
path /etc/puppet/files
allow *
3.告诉puppet关于fileserver.conf
木偶需要知道它应该读取fileserver.conf文件:
# Snippet of <vagrant directory>/Vagrantfile
config.vm.provision :puppet,
:options => ["--fileserverconfig=/vagrant/fileserver.conf"],
:facter => { "fqdn" => "vagrant.vagrantup.com" } do |puppet|
...
end
4.使用
vagrant_dir$ echo "dummy content" > ./puppet-files-symlink/example-file.txt
# Snippet of <vagrant directory>/manifests/<my manifest>.pp
...
file{'/tmp/example-file.txt':
ensure => file,
source => 'puppet:///files/example-file.txt',
}
...
注意事项
具有服务器名称(puppet:// puppet /)的URL不起作用
像puppet:// puppet / files / path / to / file这样的URL不起作用,您必须改用puppet:/// files / path / to / file(空(即隐式,服务器名称=>三个斜杠))。 我相信,原因是,如果您明确声明服务器名称,则Puppet将尝试查找服务器并从那里获取文件(如果在本地或其他地方运行Puppet Master,这可能是理想的行为;在这种情况下,只需添加将服务器名称更改为Vagrant VM中的/ etc / hosts,或确保使用的DNS服务器可以解析它)。 另一方面,如果不使用服务器名称,而是使用隐式值,则独立模式下的Puppet将查询其fileserver.conf并采取相应的措施。 (请注意,在服务器-客户端模式下,隐式服务器名称等于puppet master,即puppet:///在那里工作得很好。)
如果您使用puppet:// puppet / files /…,那么您将得到如下错误:
err: /Stage[main]/My_example_class/File[fetch_cdn_logs.py]: Could not evaluate:
getaddrinfo: Name or service not known Could not retrieve file metadata for puppet://puppet/files/analytics/fetch_cdn_logs.py:
getaddrinfo: Name or service not known at /tmp/vagrant-puppet/manifests/analytics_dev.pp:283
环境
木偶:2.7.14,流浪汉:1.0.2
参考: 在Vagrant中使用Puppet Standalone提供文件服务来自puppet://:我们的JCG合作伙伴 Jakub Holy的URI ,位于The Holy Java博客上。
翻译自: https://www.javacodegeeks.com/2012/06/serving-files-with-puppet-standalone-in.html