如何在OpsWorks中查找IP地址

如何在OpsWorks中查找IP地址,ip,chef-infra,chef-recipe,aws-opsworks,devops,Ip,Chef Infra,Chef Recipe,Aws Opsworks,Devops,我对Ohai不太好。我想知道是否有任何方法可以通过Chef recipe从各自的子网中找到节点的所有ip地址(包括自己的) 我在AWS Opswork中创建了一个层,希望在配置文件中添加每个节点的ip地址和主机名。任何帮助都将不胜感激 因此,这取决于您是要获取层中的所有实例,还是要获取堆栈中的所有实例 首先,像这样的东西-未经测试配方代码应该有效: 请注意,这将为您获取私有dns名称-因此是OpsWorks网络的内部名称。您可能想要,也可能不想要——对象上有十几个其他属性,包括公共IP地址 如果

我对Ohai不太好。我想知道是否有任何方法可以通过Chef recipe从各自的子网中找到节点的所有ip地址(包括自己的)


我在AWS Opswork中创建了一个层,希望在配置文件中添加每个节点的ip地址和主机名。任何帮助都将不胜感激

因此,这取决于您是要获取层中的所有实例,还是要获取堆栈中的所有实例

首先,像这样的东西-未经测试配方代码应该有效:

请注意,这将为您获取私有dns名称-因此是OpsWorks网络的内部名称。您可能想要,也可能不想要——对象上有十几个其他属性,包括公共IP地址

如果您想获得整个堆栈的实例,我打赌您可以循环通过
节点[:opsworks][:layers]
,就像我在这里循环通过实例一样。只是另一个循环

还要注意,此代码适用于Chef 11。在


如果您使用的是Chef 12,我找到了有关如何使用的文档

因此,这取决于您是要获取层中的所有实例,还是要获取堆栈中的所有实例

首先,像这样的东西-未经测试配方代码应该有效:

请注意,这将为您获取私有dns名称-因此是OpsWorks网络的内部名称。您可能想要,也可能不想要——对象上有十几个其他属性,包括公共IP地址

如果您想获得整个堆栈的实例,我打赌您可以循环通过
节点[:opsworks][:layers]
,就像我在这里循环通过实例一样。只是另一个循环

还要注意,此代码适用于Chef 11。在


如果您使用的是Chef 12,我找到了有关如何使用的文档

感谢Ryan为您提供的宝贵帮助和时间。我现在就试试,希望它能奏效!!感谢Ryan为您提供的宝贵帮助和时间。我现在就试试,希望它能奏效!!
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