我正在尝试使用http://puppetlabs.com/blog/git-workflow-and-puppet-environments/作为指南来设置动态环境。不幸的是,我并不完全清楚自己在做什么。
我在 /etc/puppetlabs/puppet/environments/ 的 puppet master 上创建了一个目录
我已将上述文档中的配置示例复制到我的 puppet master 上的 puppet.conf 文件中。我将文档每个部分中的三行添加到 puppet.conf 文件的相应部分,并进行更改以适合我的系统(路径等)。在这些更改之前,我使用的是 default-post- puppet.conf 的安装副本
现在,当我尝试从客户端计算机或服务器运行 puppet agent -t --noop 时,出现以下错误。
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class pe_compliance for puppet-test-01.mydomain.net on node puppet-test-01.mydomain.net
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
如果我摆脱所有这些东西并在 master 上的 puppet.conf 文件中手动放入一个环境,那么我可以添加environment = testenv
到客户端的 puppet.conf 文件中,我想我得到了一个新环境......但我在网络用户界面中看不到任何这样的东西......所以我不确定这是否有效。
我在做什么?接下来我需要做什么
在 Puppet Enterprise 中,必须存在许多模块才能正常工作。
您需要将它们复制到每个环境的 $modulepath 中,或者将默认路径添加到每个环境路径中。
Puppet Enterprise 的默认模块路径是(根据文档)
/etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
。您需要将其添加到您的环境中,例如:
modulepath = /etc/puppet/environments/production/modules:/etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
我建议只在您的部分中使用单个模块路径集
[master]
,如下所示:modulepath = $confdir/environments/$environment/modules:/etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
这不仅意味着您在配置文件中输入的次数更少,而且在您需要时添加新环境也变得微不足道。通过保留默认模块路径,您不必将所有 PE 特定模块复制到每个环境中。