将 Puppet 安装转换为使用目录环境需要什么?

将 Puppet 安装转换为使用目录环境需要什么?

我目前正在运行一个小型 puppetmaster + 客户端配置,该配置未使用 Puppet 的目录环境功能。我的 puppet 版本是 3.6。

我尝试了以下方法:

  1. 关于木偶大师:添加environmentpath=$confdir/environmentspuppet.conf
  2. 在木偶大师上:在$confdir/environments/(例如/etc/puppet/environments/production)中创建必要的路径
  3. 将我现有的模块和清单(site.pp)添加到生产环境中
  4. 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

为了后代的利益,这里是我发现的修复方法:

我犯了两个简单的错误:

  1. 我没有重启 puppetmaster(通过 Passenger)。在service apache2 restartDebian Wheezy 上,这很容易实现

  2. 重新启动后,我收到一连串新错误,表明重新加载 Puppet 时出现问题。最终在/var/log/syslog以下位置找到了包含相关信息的日志文件:。

  3. 日志表明权限存在问题/etc/puppet/manifests。事实证明,git 删除了空文件夹,而当我将我的迁移site.pp到时/etc/puppet/environments/production/manifests/site.pp,git 删除了/etc/puppet/manifests引发错误的文件夹。

  4. 我通过在文件夹中添加一个空文件夹来修复site.pp# manifests3/etc/puppet

答案2

我相信 3.6 puppet 使用目录环境,因此不要在 puppet.conf 中配置它们,只需在环境下创建目录即可。我认为您可以使用: https://docs.puppetlabs.com/puppet/latest/reference/environments_configuring.html

这有微妙的不同。我还使用 ENC,即 foreman,因此这对您来说可能有所不同,但您可能需要将 site.pp 放在全局模块目录中,而不是在您的环境中。我们只是将模块放在我们的环境中,而 site.pp 等则放在全局模块目录中。

相关内容