【问题标题】:Chef node vs environment厨师节点与环境
【发布时间】:2017-06-30 22:57:41
【问题描述】:

在我开始管理的这个设置中试图找出节点和环境之间的区别时,我有点迷失了。我不确定是否有我遗漏的东西,如果这是不好的做法,或者你有什么。我也是厨师新手,慢慢了解它。

我将节点理解为运行 chef-client 并根据运行列表保持所需状态的机器。

我还了解环境用于描述有关特定环境的信息,并且可能具有特定于该环境的变量。

我在 chef-repo 中看到的内容和我正在管理的代码非常相似——如果不是完全重叠的话。

给定一个向厨师服务器注册的节点,以及一个指定运行的环境——我看到了相同的配置。

在节点上,有关于要使用的说明书版本、chef_environment 设置的环境、仅与该应用程序相关的特定应用程序变量、机器收集的硬件统计信息等信息。

在环境中,有相同的信息集合、食谱版本、应用变量和设置。

我什至不认为节点中提到的环境受到尊重,因为在竹子上的刀引导程序运行的命令中指定了不同的环境。

我的问题是 --- 这是多余的吗?哪些设置被尊重,哪些被忽略,这可以减少并变得更简单吗?这是一种常见且正确的设置吗?

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    一般来说,您应该只为唯一信息定义节点属性,例如每个服务器都不同的主机名。

    在节点和环境中设置相同属性时,优先级有点复杂。 Chef的属性有六级覆盖:

    • 默认
    • force_default
    • 正常
    • 覆盖
    • force_override
    • 自动

    在同一级别,环境优先于节点,这可能与直觉相反。您可以通过使用默认和覆盖等不同级别来调整覆盖的优先级。

    详情请参考以下文档的表格: https://docs.chef.io/attributes.html#attribute-precedence

    【讨论】: