我希望 Chef 食谱network_interfaces
为我的每个节点提供 ip 地址、网络掩码等的动态值。对我有用的是以下内容:
db_role.rb (block1):
override_attributes(
"network_interfaces" => {
:device => 'eth0',
:address => '123.123.123.123',
}
)
但这不是很动态。我的想法是将 ip 地址(、网络掩码等)提交给knife bootstrap
.
然后节点看起来像这样(block2):
{
"normal": {
"network_interfaces" => {
"device" : "eth0",
"address" : "123.123.123.123"
}
},
"name": "foobar",
"run_list": [
"recipe[zsh]",
"role[networking_interfaces]"
]
}
不幸的是,network_interfaces
食谱默认情况下不会选择这些值。我的想法是在角色定义中引用 block2 中显示的节点特定属性,如下所示:
override_attributes(
"network_interfaces" => {
:device => node['network_interfaces']['device'],
:address => node['network_interfaces']['address'],
}
)
这不起作用,因为它显然不是 json 并且 Chef 无法处理角色文件中动态分配的值。
我怎样才能实现运行network_interfaces
配方并将我的节点特定值传递给它?