Answers:
您建议的任何一种方法都没有错。我们有三个人偶大师,都位于一个站点上,并为世界各地的节点服务-我们根据连接的人偶节点是否在dev / test / prod中进行分离。其他人则更喜欢在每个地理区域经营人偶大师。其他人有很多人偶,有些人只能管理一个节点!
关键是,在版本控制系统中存储和管理puppetmaster清单树至关重要 -像对待公司维护的任何其他代码一样对待它。我建议使用Git,但如果您更习惯于Subversion,它也可以解决问题。puppetmaster仅仅是提供其VCS特定视图的服务,而不是本身的中央数据库。
将您的内容放在VCS中之后,您便可以将所需的清单/模块部署到相应的人偶大师中,并轻松地使其保持同步。惯例似乎是针对每个人偶模块都有一个git / svn repo / module,尽管没有什么阻止您将整棵树放在一个repo / module下。
我对您的问题是:
您还可以使用此处描述的方案,使用带有分布式VCS(例如Git)的无Puppetmaster的系统:
http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control
我们还有许多人偶大师,我们在不同的环境中进行同步。为此,我们在subversion中管理所有的人偶模块和清单,然后使用常规人偶清单和名为vcsdeploy的模块将人偶模块部署到人偶大师上,该模块执行检出操作:
http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff
当我们想要同步时,我们标记一个版本,然后更新人偶主文件的nodes.pp。
问候
戴夫