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
レシピを実行してノード固有の値をレシピに渡すにはどうすればよいですか?