如何在OpsWorks中查找IP地址

时间:2015-12-29 10:14:34

标签: ip chef chef-recipe aws-opsworks devops

我对Ohai并不擅长。我想知道是否有任何方法可以通过Chef配方找到各个子网中节点的所有IP地址(包括自己的)。

我在AWS Opswork中创建了一个图层,并希望在配置文件中添加每个节点的ip addr和hostname。任何帮助将高度赞赏。

1 个答案:

答案 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的文档。