【问题标题】:Chef's policy groups and environmentsChef 的策略组和环境
【发布时间】:2017-06-27 13:16:11
【问题描述】:

每个环境(如开发、登台或生产,如they do here)使用策略组的意图很明显。但是,在处理一些与环境相关的属性时,例如名称或种子地址,与旧的角色/环境布局相比,使用策略文件来处理是相当棘手的。

目前我正在使用带有策略组名称的额外属性命名空间层,例如:

default['foo']['development']['bar'] = 'zaz'
default['foo']['production']['bar'] = 'zaz'

稍后在食谱中这样称呼它们:

default['foo'][node.policy_group]['bar']

其中node.policy_group 将解析为developmentproduction,具体取决于policy group 分配的机器。

我主要关心的是我必须在每个Policyfile 上携带大量与将要部署的环境无关的属性,例如,如果我设置了一个 ElasticSearch 集群,我应该携带Policyfile上所有环境的master节点列表。

有没有更好的方法来使用Policyfile 管理环境属性?我真的注定要在每个Policyfile 上携带无数属性?

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    另一种方法,我向我的客户推荐的是使用“环境data bag”,这是针对传统厨师环境的概述:https://docs.chef.io/data_bags/#environments

    您可以通过执行以下操作将相同的逻辑应用到policy_group(环境的逻辑替换):

    {
      "id": "some_data_bag_item",
      "production" : {
        # Hash with all your data here
      },
      "testing" : {
        # Hash with all your data here
      }
    }
    

    在配方中使用数据包时,可以使用以下代码从配方中访问该数据:

    data_bag_item[node.policy_group]['some_other_key']
    

    这是利用 poise-hoist 功能添加到 Chef Infra Client 版本 14.0: https://docs.chef.io/release_notes_client/#policyfile-hoisting

    【讨论】:

      【解决方案2】:

      多年来,poise-host 方法已直接纳入 Chef infra 中:

      https://docs.chef.io/release_notes_client/#policyfile-hoisting

      【讨论】:

        【解决方案3】:

        平衡葫芦食谱可能会有所帮助,但粗略地说是的,您需要拥有一个大型的属性博客。您可以使用instance_eval 中的一些技巧避免在每个策略中重复它们,如https://yolover.poise.io/ 所示。更一般地,对于诸如“使用哪个 ES 服务器”之类的问题,您可能需要考虑使用专用的服务发现工具,例如 Consul 或 Eureka。

        【讨论】:

          【解决方案4】:

          本周我们在 Config Managament Camp 的“问我任何问题”会议上进行了同样的讨论。

          Chef Software Inc. (IIRC Thom May) 的一名员工表示,他们确实在考虑增加指定一些特定于环境的属性的可能性,因为这似乎是一个经常被要求的功能。

          在此之前,您可能希望从数据包(遵循特定命名约定)中检索此类数据。

          虽然我还不是Policyfiles 的用户,但我正在使用similar approach (implementation) 来加载数据中心的特定属性,并将它们与当前角色说明书中的属性合并。据我了解,这应该对您有所帮助。

          【讨论】:

            猜你喜欢
            • 2015-02-06
            • 1970-01-01
            • 1970-01-01
            • 2015-06-30
            • 1970-01-01
            • 2012-03-11
            • 2017-09-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多