我正在尝试将人偶模块 ( https://github.com/puppetlabs/puppetlabs-puppet/blob/master/manifests/init.pp ) 包含在我自己的通用模板模块中。但只master => true
为我的主节点设置。但我收到此错误:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Only subclasses can override parameters at /etc/puppet/modules/template/manifests/puppetmaster.pp:5 on node puppet1.mydomain.com
我的常用模板如下所示:
类模板::常见{ 包括 ssh 包括用户::基础设施 包括用户::系统 包括包::共同 班级 { “木偶”: puppet_server => 'puppet.mydomain.com', } }
这包含在我的所有节点(包括我的 puppetmaster)中,其中还包含此模板:
类模板::puppetmaster 继承木偶{ 包括 mysql::server 包括 myfirewall::defaults 类[‘傀儡’] { master +> true }
我希望能够让我的人偶大师安装主位和代理(已经继承)。但我宁愿不必为每个节点定义人偶资源,这样我就可以为我的人偶大师拥有一个单独的同一类资源。
解决这个问题的好方法是什么?
回答你如何完成这项工作的元问题,如果你正在使用 Passenger 来运行你的 Puppet master,如果你有一个任何规模的系统,你应该这样做,有一个简单的解决方法来解决这个疯狂的问题,那就是 puppetlabs 模块. 您只需将一个名为 /etc/puppet/puppetmaster.conf 的新文件和一些其他配置放在一个名为 puppetmaster 的新模块中,并将此行添加到 config.ru
您可以使用 puppetlabs 模块中的一些逻辑,但如果您不关心将配置的每一位都作为参数,那么只推送一个文件或不太复杂的模板可能会更简单。然后在作为主节点的节点上包含 puppetmaster,你就设置好了。您还可以修改现有的 puppetlabs 来执行上述操作。
解决最初的问题,Hiera 可能是最简单的解决方案。在 init.pp 中使用它
然后为需要它的机器设置 puppet_master: true 。我个人更喜欢第一种方法。