有没有人用 Puppet 管理过几个地理分布的系统?
我有几个几乎完全相同的部署(除了服务器 IP),我希望将其管理转换为 Puppet。
我有两个选择:
让每个部署都托管它自己的 PuppetMaster 以提供本地配置,然后以某种方式同步 PuppetMasters(可能再次与 puppet 同步)
在 AWS EC2 上托管 PuppetMaster 以实现高可用性,并从单点为所有部署提供配置
有没有人尝试过第二种选择,结果如何?我对这种环境下的高可用性性能特别感兴趣。
谢谢。
有没有人用 Puppet 管理过几个地理分布的系统?
我有几个几乎完全相同的部署(除了服务器 IP),我希望将其管理转换为 Puppet。
我有两个选择:
让每个部署都托管它自己的 PuppetMaster 以提供本地配置,然后以某种方式同步 PuppetMasters(可能再次与 puppet 同步)
在 AWS EC2 上托管 PuppetMaster 以实现高可用性,并从单点为所有部署提供配置
有没有人尝试过第二种选择,结果如何?我对这种环境下的高可用性性能特别感兴趣。
谢谢。
您提出的任何一种方法都没有错。我们有三个 puppetmaster,都位于一个站点,服务于世界各地的节点——我们根据连接的 puppet 节点是否在 dev/test/prod 中将它们分开。其他人更喜欢按地理区域运行 puppetmaster。其他人有很多puppetmasters,有些只管理一个节点!
关键是在版本控制系统中存储和管理 puppetmaster 清单树至关重要 - 像对待公司维护的任何其他代码一样对待它。我会推荐 Git,但如果你更习惯的话,Subversion 也能做到这一点。puppetmaster 只是一个服务,它提供其 VCS 的特定视图,而不是作为中央数据库本身。
使用 VCS 中的内容,您可以将所需的清单/模块部署到相应的 puppetmasters,并轻松保持同步。约定似乎是为了每个 puppet 模块都有一个 git/svn repo/module,尽管没有什么能阻止你将整个树放在一个 repo/module 下。
我对你的问题是:
您还可以使用分布式 VCS(例如 Git)使用 Puppetmaster-less 系统,使用此处描述的方案:
http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control
我们还有许多 puppet master,我们同步不同的环境。为此,我们在 subversion 中管理我们所有的 puppet 模块和清单,然后使用常规 puppet 清单和一个名为 vcsdeploy 的模块将 puppet 模块部署到 puppetmasters 上:
http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff
当我们想要同步时,我们标记一个版本,然后为 puppet master 更新 nodes.pp。
问候
戴夫