我对Ohai并不擅长。我想知道是否有任何方法可以通过Chef配方找到各个子网中节点的所有IP地址(包括自己的)。
我在AWS Opswork中创建了一个图层,并希望在配置文件中添加每个节点的ip addr和hostname。任何帮助将高度赞赏。
答案 0 :(得分:0)
所以这取决于你想要获取层中的所有实例,或者堆栈中的所有实例。
首先,这样的事情 - 未经测试! - 食谱的代码应该工作:
my_layer_name = "my_database_layer_or_whatever"
node[:opsworks][:layers][my_layer_name][:instances].each do |current_instance, current_instance_data|
puts node[:opsworks][:layers][my_layer_name][:instances][current_instance][:private_dns_name]
end
请注意,这将为您提供私有DNS名称 - 因此是OpsWorks网络的内部名称。您可能想要也可能不想要 - 对象上有十几个其他属性,包括公共IP地址。
如果你想获得整个筹码的实例,我打赌你可以循环遍历node[:opsworks][:layers]
,因为我已经在这里循环了实例。只是另一个循环。
另请注意,此代码适用于Chef 11。Chef 12 things have changed a bit。
如果您正在使用Chef 12,我找到了有关如何use/search the Chef Data Bags for OpsWorks的文档。