Chef infra 跨配方访问属性
是否可以配置可跨配方访问的属性?如果是,如何进行?我已经为每个菜谱配置了属性,但是我想消除一些重要的重复 Chef的工作方式是,在聚合开始时,Chef迭代所有包含将在节点上运行的菜谱的菜谱(直接在运行列表上或通过Chef infra 跨配方访问属性,chef-infra,vagrant,Chef Infra,Vagrant,是否可以配置可跨配方访问的属性?如果是,如何进行?我已经为每个菜谱配置了属性,但是我想消除一些重要的重复 Chef的工作方式是,在聚合开始时,Chef迭代所有包含将在节点上运行的菜谱的菜谱(直接在运行列表上或通过include_recipe引用)。对于每个cookbook,厨师将读入存储在属性文件夹中的所有属性文件,并将属性添加到节点散列中 这里需要注意的重要一点是,属性与您正在执行的配方无关,所有配方都将看到加载的属性的相同视图 你的描述有点含糊不清,但据我所知,你有一本食谱,里面有一些食谱,
include_recipe
引用)。对于每个cookbook,厨师将读入存储在属性
文件夹中的所有属性文件,并将属性添加到节点
散列中
这里需要注意的重要一点是,属性与您正在执行的配方无关,所有配方都将看到加载的属性的相同视图
你的描述有点含糊不清,但据我所知,你有一本食谱,里面有一些食谱,你为每个食谱创建了一个相应的属性文件。在每个属性文件中,您都定义了相同的属性(例如,default['myapp']['foo']=“blah”
)
这是不必要的,因为我在开始时描述了这个过程。在收敛时间,Chef将读取所有属性文件,而不管您运行的是什么菜谱。这意味着要加载的第二个(或第三个或第四个等)属性文件将只覆盖先前加载的属性文件设置的节点['myapp']['foo']
属性
在这种情况下,通用模式是有一个default.rb
属性文件,它定义了所有配方将使用的所有通用属性。如果需要,您可以将特定于配方/成分的属性移动到它们自己的属性文件中
在这种情况下需要注意的一点是,Chef按字母顺序加载属性文件。如果您的配方特定属性文件(例如
client.rb
)引用了default.rb
中定义的属性之一,则您需要使用该指令,以便让Chef在client.rb
之前加载default.rb
,否则,default.rb
中的所有属性仍将为零。如何在烹饪书之间共享属性?