我目前正在运行一个小型 puppetmaster + 客户端配置,该配置未使用 Puppet 的目录环境功能。我的 puppet 版本是 3.6。
我尝试了以下方法:
- 关于木偶大师:添加
environmentpath=$confdir/environments
到puppet.conf
- 在木偶大师上:在
$confdir/environments/
(例如/etc/puppet/environments/production
)中创建必要的路径 - 将我现有的模块和清单(
site.pp
)添加到生产环境中 puppet agent -vt
切换到此 git 分支并在客户端上运行测试
不幸的是,我收到以下错误:
Info: Retrieving pluginfacts
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://puppet/pluginfacts
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://puppet/plugins
Notice: /File[/var/lib/puppet/lib/puppet]: Dependency File[/var/lib/puppet/lib] has failures: true
傀儡运行不会失败,但在完成之前会滚动出现类似的错误。
将当前配置(模块和清单)复制到新环境背后的想法production
是,所有客户端都应将其$environment
变量设置production
为默认。这是有缺陷的逻辑吗?
我的转变基于Puppet 实验室指南。
答案1
为了后代的利益,这里是我发现的修复方法:
我犯了两个简单的错误:
我没有重启 puppetmaster(通过 Passenger)。在
service apache2 restart
Debian Wheezy 上,这很容易实现重新启动后,我收到一连串新错误,表明重新加载 Puppet 时出现问题。最终在
/var/log/syslog
以下位置找到了包含相关信息的日志文件:。日志表明权限存在问题
/etc/puppet/manifests
。事实证明,git 删除了空文件夹,而当我将我的迁移site.pp
到时/etc/puppet/environments/production/manifests/site.pp
,git 删除了/etc/puppet/manifests
引发错误的文件夹。我通过在文件夹中添加一个空文件夹来修复
site.pp
#manifests
3/etc/puppet
答案2
我相信 3.6 puppet 使用目录环境,因此不要在 puppet.conf 中配置它们,只需在环境下创建目录即可。我认为您可以使用: https://docs.puppetlabs.com/puppet/latest/reference/environments_configuring.html
这有微妙的不同。我还使用 ENC,即 foreman,因此这对您来说可能有所不同,但您可能需要将 site.pp 放在全局模块目录中,而不是在您的环境中。我们只是将模块放在我们的环境中,而 site.pp 等则放在全局模块目录中。