2016-04-28 91 views
3

有需要一个傀儡代理人联系人部分不同傀儡大师。如何从一个木偶代理使用多个不同的木偶大师?

原因:有不同的组创建不同的独立清单组。

可能的团体和他们的任务

  • 应用程序供应商:应用程序的配置
  • 安全性:硬化
  • 操作:路由表,监控工具

每个组要运行它的自己的木偶大师 - 数据(清单和适当的数据)应该严格分开。如果可能的话,一个团队甚至不应该看到/访问其他人的清单(我们在puppet agent操作系统上使用MAC)。

的思考和想法,都失败了:

  • 使用需要(只)希拉不灵活 - 有需要有不同的体现。
  • r10k:支持多个环境,但在每个环境中只能访问一组清单。
  • 多个但相同的puppet服务器使用例如DNS循环:这是相反的方式。我们需要不同的木偶大师。

,可能是可能的,但有些方面......

  • 运行傀儡代理的多个实例。这'感觉'很奇怪。优点:访问权限可以根据需要进行限制(例如应用程序puppet代理可以在应用程序用户下运行)。
  • 修补傀儡,它可以处理多个木偶大师。缺点:可能是一些工作。
  • 使用其他机制来分担责任。例如:使用不同的git-repository。创建一个木偶大师。木偶大师拉出所有不同的存储库并为清单提供服务。

我的问题:

  1. 是否有实现与木偶这一要求直接的方式?
  2. 如果没有,是否有一些最佳实践如何做到这一点?

回答

2

虽然我认为你在这里试图做的更好的解决办法是将所有的模块和数据合并到一个主设备上,并且利用环境将有效地完全相同(不同的主设备将提供不同的这可以通过实现标准的多主基础架构(一个用于证书签名的CA主站,由具有相同CA主站签名的证书的多个编译主站,配置为在其他地方转发证书流量)来实现,并将每个主站配置为有你需要的任何东西。然后,您最终必须指定每次运行(cronjob或其他方法)时要检入哪个主数据库,并且有可能通过一个签入更改由另一个设置的设置(有些情况下会消除强化/安全性概念)。 我会敦促你更深入地思考如何协作你的各个方面(每个部门的hiera数据和具有访问控制的模块的git回购),以便中央主数据库可以满足你的需求(并且访问该主数据库将是唯一的方法从任何地方获取数据/模块)。 这种安装方式实施起来会很复杂,但最终结果会更可靠和可维护。木偶公司甚至可以进行咨询,以帮助您做到正确。

也可能有其他方法,只是fyi。

+3

可替代地,合并来自不同源的模块的所有成在单个(逻辑)掌握*相同*环境不仅会更简单设置,但也将提供免费和自动检测一组与另一组的规格之间的冲突。将不同团体的规格分解到不同的环境中将会失去许多(但不是全部)将所有东西放在同一个主体上的优点。 –

+0

感谢您的回答。我目前正试图使用​​一个puppet master和多个git服务器来实现这个版本。给我一些时间来评估这一点。 –

0

我经常发现,为了开发目的,多家的木偶代理人很方便,因为使用本地puppet服务器,您可以即时测试清单更改 - 没有要求提交,推送和r10k deploy environment只是使用目录环境和一个(远程)puppet服务器。

我发现最好的办法就是改变路径配置(否则你会遇到问题,例如CA证书无法与其他服务器进行验证) - “你的一种形式”运行多个实例傀儡代理人“的建议。 (我仍然运行所有这些特权,所以他们都可以使用apt package {}等)

对于木偶3,我想通过改变与--libdir的LIBDIR(因为ssldir是LIBDIR下)做到这一点,但现在(木偶4+)看起来更明智,可以改变--confdir。因此,例如:

$ sudo puppet agent -t     # Runs against main puppet server 
$ sudo puppet agent -t \ 
    --server=puppet.dev.example.com \ 
    --confdir=/etc/puppetlabs/puppet-dev # Runs against dev puppet server