我们是一家混合 linux/windows 商店,不久前成功采用 Puppet 进行 Config Mgmt。我们希望将 ansible 作为我们的部署编排工具(研究表明 puppet 不能很好地做到这一点),但对如何集成这两个产品有疑问。
今天,puppet 是关于环境信息(哪些节点属于哪些组等)的真实来源。我想避免在 ansible 中复制这些信息。在两种产品之间共享环境信息方面是否有任何最佳实践?
我们是一家混合 linux/windows 商店,不久前成功采用 Puppet 进行 Config Mgmt。我们希望将 ansible 作为我们的部署编排工具(研究表明 puppet 不能很好地做到这一点),但对如何集成这两个产品有疑问。
今天,puppet 是关于环境信息(哪些节点属于哪些组等)的真实来源。我想避免在 ansible 中复制这些信息。在两种产品之间共享环境信息方面是否有任何最佳实践?
减少系统之间重复状态数量的一种方法是使用Ansible 的“动态库存”支持。您无需在文本文件中定义主机/组,而是使用从其他地方提取相同数据的脚本。这可能是PuppetDB、Foreman等,这取决于您的环境。
编写一个新脚本也很简单,它只需要是任何可执行文件(bash/python/ruby/etc),它以特定格式返回 json。
最后,可以使用 puppet 推出新版本,但使用类似“微服务”的发布过程更容易。确保应用程序/服务/数据库在不同版本之间保持向后兼容可以使发布版本对 puppet 和您最喜欢的包管理器变得微不足道。
如果您正在寻找 puppetlabs 的解决方案,那么使用 Puppet 和 Mcollective 应该是可行的方法