在Vagrant中使用Puppet独立服务文件

如果您在客户端-服务器模式下使用Puppet来配置您的生产环境,那么您可能希望能够从prod配置复制并粘贴到Vagrant的独立puppet的配置中以进行测试。 为此所需的关键功能之一是通过“ source =>'puppet:/// path / to / file'”启用文件服务。 在客户端-服务器模式下,文件由服务器提供,在独立模式下,您可以将configure配置为从本地(可能是共享的)文件夹中读取。 我们将看到如何执行此操作。

鸣谢:这篇文章很大程度上基于Akumria在StackOverflow上的回答:如何从模块中获取人偶清单中的文件。

在Vagrant中启用Puppet Standalone来解决Puppet:///…

快速概述:

  1. 使目录以及要提供给Vagrant VM的文件可用
  2. 创建fileserver.conf以通知Puppet目录
  3. 告诉p有关fileserver.conf的信息
  4. 用它

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值