【问题标题】:Chef organizing nodesChef 组织节点
【发布时间】: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


    【解决方案1】:

    我会选择使用节点 force_override 属性来定义规则的例外。由于节点 force_override 属性为after environment overrides in order of precedence,您应该可以将其设置在需要保留在 1.6 的一个节点上,然后更新环境以将其他节点移动到 1.7。

    【讨论】:

      【解决方案2】:

      厨师的问题是你有这么多的选择......该选择哪个?

      我建议尽可能使用与Berkshelf 配合使用的说明书来利用版本控制。

      所以在你的食谱的 1.0 版中指示应该安装 Java6:

      node.override[:java][:jdk_version] = '6'
      
      include_recipe "java"
      

      但在你的食谱 2.0 版中,将其更改为 Java7

      node.override[:java][:jdk_version] = '7'
      
      include_recipe "java"
      

      将两个食谱版本加载到您的厨师服务器中,然后使用环境来控制要在运行时使用的食谱版本:

      {
        "name": "myapp-dev",
        "json_class": "Chef::Environment",
        "description": "For use by development servers",
         "cookbook_versions": {
          "myapp-java": "= 2.0"
        },
        "chef_type": "environment"
        }
      }
      
      {
        "name": "myapp-prod",
        "json_class": "Chef::Environment",
        "description": "For use by production servers",
         "cookbook_versions": {
          "myapp-java": "= 1.0"
        },
        "chef_type": "environment"
        }
      }
      

      这种技术的优势在于它更适合现代 CI 技术。您可以开发单独的 ALM 工作流来测试和验证说明书修订,然后在运行时部署它们。 Berkshelf 是使这成为可能的工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多