我过去只是包含了所有的木偶模块:
include user_manager
include pp_package_manager
include ppcc_code_manager
include ppcc_backup
include pp_db_manager
include pp_apache_manager
include pp_rabbit_manager
include pp_salt_manager
include pp_freeswitch_manager
include ppcc_services_manager
这导致了很多依赖性问题,我不得不多次运行木偶代理才能自行解决。然后我尝试使用Stages来清理它,结果是:
stage { 'code': require => Stage['main'], before => Stage['backup'], }
stage { 'backup': before => Stage['big-packages'], }
stage { 'big-packages': before => Stage['freeswitch'], }
stage { 'freeswitch': before => Stage['services'] }
stage { 'services': }
node 'blah.example.com' {
class { 'pp_package_manager': stage => 'main', }
class { 'user_manager': stage => 'main', }
class { 'ppcc_code_manager': stage => 'code', }
class { 'ppcc_backup': stage => 'backup', }
class { 'pp_db_manager': stage => 'big-packages', }
class { 'pp_apache_manager': stage => 'big-packages', }
class { 'pp_rabbit_manager': stage => 'big-packages', }
class { 'ppcc_services_manager': stage => 'services', }
class { 'pp_salt_manager': stage => 'big-packages', }
class { 'pp_freeswitch_manager': stage => 'freeswitch', }
}
我甚至尝试使用箭头符号将所有内容放入节点定义中,然后使用箭头符号定义阶段。每次都没有发生。没有错误,只是没有。即使使用--debug
,木偶代理也会......停止。
最后,我只是尝试在每个类声明之间使用箭头符号。
class { 'user_manager': } ->
class { 'pp_package_manager': } ->
class { 'ppcc_code_manager': } ->
class { 'ppcc_backup': } ->
class { 'pp_db_manager': } ->
class { 'pp_apache_manager': } ->
class { 'pp_rabbit_manager': } ->
class { 'pp_salt_manager': } ->
class { 'pp_freeswitch_manager': } ->
class { 'ppcc_services_manager': }
那也没有。我现在几乎都是出于想法。当我运行木偶代理时为什么没有发生?我做错了什么?
答案 0 :(得分:2)
我无法对这些问题做出真正的评论而不会看到你的清单。
但我认为有一些东西可以帮到你:你有没有读过角色和个人资料模式?它有助于解决这些设计问题,并有助于缩小哪些清单导致问题。
它还允许您对每个组件或组件组应用测试,因此您可以缩小导致代理无法运行的问题。
关于它的一些示例帖子:
https://puppetlabs.com/presentations/designing-puppet-rolesprofiles-pattern http://garylarizza.com/blog/2014/02/17/puppet-workflow-part-2/ http://rnelson0.com/2014/07/14/intro-to-roles-and-profiles-with-puppet-and-hiera/