【发布时间】:2014-04-22 17:15:29
【问题描述】:
我一直在组织我的托管节点,说我有 12 台机器、5 个应用程序、5 个数据库和 2 个内存缓存。我相应地有3个角色。这是开发环境。我有大量机器的暂存和生产环境。所以我相应地创建了厨师环境。
Role: app
Nodes: 5 app nodes
Cookbooks: tomcat, java
override_attributes: { java_version: 1.6.0 }
对于 db 和 memcache 也是如此......
如果稍后我们决定将 java 升级到 1.7,只需将角色的 override_attribute 更新为 1.7 即可影响所有 5 个节点。
我的问题是,如果我有一种情况,只有一台机器可以使用 1.6.0,而其余所有 1.7 的最佳做法是什么。
我尝试过的选项, 一个。如果 node[fqdn]==HARD_CODED..else 在食谱中有一个额外的条件。但这种情况仅在开发环境中。暂存和生产都将具有相同的 java 版本。我不想有不同的食谱。 湾。 Override_attributes 有一个 java_version: 1.7 , java_1.6_hosts: "exceptional_host"。但是使角色过于复杂。 C。要覆盖的数据包。但是由于配置位于多个位置,因此配置容易出错。
我知道对此没有明确的答案,但我想了解一些关于将类似配置应用于大量机器时的最佳实践的想法,并且您有几个例外如何处理它们?
【问题讨论】:
标签: chef-infra