Chef infra 如何管理一个供所有人使用的厨师服务器
我已经不再是厨师的新手了,尽管无论如何我都不是专家。使用开源Chef,我正在设置一个单一Chef服务器,该服务器将包含我公司的所有食谱,旨在将我们的产品应用程序安装在运行基本操作系统(如RHEL 5.10)的虚拟机上。我正在版本控制中隔离cookbook文件,但是当我将它们导入ONE chef服务器时,如何隔离它们?以下是我面临的挑战:Chef infra 如何管理一个供所有人使用的厨师服务器,chef-infra,Chef Infra,我已经不再是厨师的新手了,尽管无论如何我都不是专家。使用开源Chef,我正在设置一个单一Chef服务器,该服务器将包含我公司的所有食谱,旨在将我们的产品应用程序安装在运行基本操作系统(如RHEL 5.10)的虚拟机上。我正在版本控制中隔离cookbook文件,但是当我将它们导入ONE chef服务器时,如何隔离它们?以下是我面临的挑战: 我的公司有不同的产品,比如ProdA,ProdB,ProdA和ProdB是完全不同的 尽管这两个产品可能共享相同的应用程序,但每个产品中应用程序的实现是不同的
- 我的公司有不同的产品,比如ProdA,ProdB,ProdA和ProdB是完全不同的李>
- 尽管这两个产品可能共享相同的应用程序,但每个产品中应用程序的实现是不同的。例如,尽管我在两种产品上都安装了ActiveMQ,但在每种产品上安装的ActiveMQ是不同的
- 此外,我需要能够安装,在一时兴起,不同版本的ProdA软件的虚拟机上预定的ProdA。ProdB也一样,适用于计划用于ProdB的VM。我永远不会在为ProdB设计的虚拟机上安装ProdA软件,反之亦然
- 一套特定的食谱可能适用于ProdA软件的v1.0版,而另一套可能适用于ProdA软件的v2.0版
- 一组开发人员可能同时在编写ProdA cookbooks;一组不同的开发人员可能会编写ProdB cookbooks我想将每个开发人员的cookbook版本分开
- 我想将开发人员的食谱与QA或客户使用的食谱分开
- Dev1使用一本食谱在ProdA上安装ActiveMQ。Dev11还可以在一本食谱上工作,以便在ProdB上安装ActiveMQ。同样,尽管它们都是针对ActiveMQ的,但安装是不同的。我们如何将这两本ActiveMQ烹饪书分开,给它们起不同的名字——ProdA_ActiveMQ和ProdB_ActiveMQ这看起来太可怕了强>
- Dev2想要调整Dev1的ProdA/ActiveMQ食谱,并在其本地环境中进行测试。现在Dev2想让其他dev尝试它,所以他将它上传到chef服务器。我们如何确保他不会破坏每个人的ActiveMQ安装
- ProdA的1.0-1.4版使用ActiveMQ cookbook的0.1.0版,但ProdA的1.4-1.20版需要ActiveMQ的0.2.0版。我如何建模
- 我正在为ProdA的2.0版开发一个功能。但是我的经理 告诉我在1.44版或我们的 产品。我怎样才能很快知道人们习惯了哪套食谱 安装ProdA的1.44版
我知道这可能是一个负载的职位。有更好的论坛吗?有人能给我指出一个链接,在那里我的场景已经完成了?谢谢。如评论中所述,这通常通过使用图书馆和包装烹饪书来解决。您将拥有一本共享的
activemq
cookbook(可能来自社区网站或由内部编写),它为activemq提供了一个核心配置步骤。对于每个环境,您都会有一个类似于prod_a::activemq
的食谱/配方,或者设置该环境所需的任何特定属性或其他内容,然后使用include_recipe
或activemq
食谱中的LWRP。您可以找到有关此环境烹饪书模式的更多信息。如果您想要一个中间层environment-yconfig,您也可以进行检查。您可以使用始终查看给定节点上每个cookbook的哪些版本处于活动状态。如注释中所述,这通常通过使用library和wrapper cookbook来解决。您将拥有一本共享的activemq
cookbook(可能来自社区网站或由内部编写),它为activemq提供了一个核心配置步骤。对于每个环境,您都会有一个类似于prod_a::activemq
的食谱/配方,或者设置该环境所需的任何特定属性或其他内容,然后使用include_recipe
或activemq
食谱中的LWRP。您可以找到有关此环境烹饪书模式的更多信息。如果您想要一个中间层environment-yconfig,您也可以进行检查。您可以使用始终查看给定节点上每个cookbook的哪些版本处于活动状态。在大规模运行chef时,有三种方法可以隔离用户之间的配置
- 发展
- 试验
- 生产
pool_members = search("node", "role:#{node['haproxy']['app_server_role']} AND chef_environment:#{node.chef_environment}") || []