Puppet 和动态环境

Puppet 和动态环境

我正在尝试使用设置动态环境http://puppetlabs.com/blog/git-workflow-and-puppet-environments/作为指导。不幸的是,我并不完全清楚自己在做什么。

我在 /etc/puppetlabs/puppet/environments/ 的 Puppet Master 上创建了一个目录

我已将上述文档中的配置示例复制到我的 Puppet Master 上的 puppet.conf 文件中。我将文档每个部分中的三行添加到 puppet.conf 文件的相应部分,并根据我的系统进行了更改(路径等...)在进行这些更改之前,我使用的是 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

如果我摆脱所有这些东西并在主服务器上的 puppet.conf 文件中手动放入一个环境,那么我可以添加environment = testenv到客户端上的 puppet.conf 文件,并且我认为我得到了一个新的环境......但我没有看到任何这样的东西在 Web UI 中......所以我也不确定这是否有效。

我做错了什么?我下一步该做什么

答案1

在 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 特定模块复制到每个环境中。

相关内容