我有节点的配方和属性文件.例如localhost和linode.我试图在默认或其他属性之前首先加载属性文件(并设置主机名等).例:
属性/ localhost.rb:
default[:hostname] = "localhost"
default[:nginx][:hostname] = 'mbdev-localhost'
include_attribute 'mbdev::common'
Run Code Online (Sandbox Code Playgroud)
属性/ common.rb
default[:nginx][:website1][:url] = "subdomain." + default[:nginx][:hostname]
Run Code Online (Sandbox Code Playgroud)
食谱/ localhost.rb
include_recipe 'mbdev::default'
Run Code Online (Sandbox Code Playgroud)
运行列表:
'mbdev::localhost'
Run Code Online (Sandbox Code Playgroud)
但是,似乎include_attribute使'common'属性首先加载.因此nginx-hostname尚未设置...
我得到的顺序是:1)加载属性/ default.rb 2)加载属性/ common.rb 3)关于+的错误
如何在common.rb之前加载localhost.rb?
Hol*_*ust 12
默认情况下,属性文件按字母顺序加载.这在过去并不完全一致,但已在CHEF-2903中修复.
因此,attributes/common.rb之前attributes/localhost.rb只是因为它按字母顺序提前加载.规则的例外是attributes/default.rb是始终在cookbook中的任何其他属性文件之前加载.
通常,属性文件的加载顺序如下:
attributes/default.rb(是否存在)您可以通过使用加载属性文件,而不是通常使用加载属性文件include_attribute,但是您不能以此方式加载它.
这个逻辑在厨师中是硬编码的,不能改变.您可以执行一些解决方法:
您可以强制再次加载属性文件:
node.from_file(run_context.resolve_attribute("cookcook_name", "attribute_file"))
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4041 次 |
| 最近记录: |