From dcf97a32dcabb30c981072e8f61560309721e1bc Mon Sep 17 00:00:00 2001 From: Kevin Menard Date: Tue, 28 Sep 2010 21:39:17 -0400 Subject: [PATCH] Much better way to get an instance's internal IP. --- lib/rubber/cloud/aws.rb | 3 ++- lib/rubber/recipes/rubber/instances.rb | 13 +------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/lib/rubber/cloud/aws.rb b/lib/rubber/cloud/aws.rb index f5cc7c34b..04beaeee7 100644 --- a/lib/rubber/cloud/aws.rb +++ b/lib/rubber/cloud/aws.rb @@ -38,8 +38,9 @@ def describe_instances(instance_id=nil) instance = {} instance[:id] = item.instanceId instance[:external_host] = item.dnsName - instance[:external_ip] = IPSocket.getaddress(instance[:external_host]) rescue nil + instance[:external_ip] = item.ipAddress instance[:internal_host] = item.privateDnsName + instance[:internal_ip] = item.privateIpAddress instance[:state] = item.instanceState.name instance[:zone] = item.placement.availabilityZone instance[:platform] = item.platform || 'linux' diff --git a/lib/rubber/recipes/rubber/instances.rb b/lib/rubber/recipes/rubber/instances.rb index 5ae55e249..f23d46cac 100644 --- a/lib/rubber/recipes/rubber/instances.rb +++ b/lib/rubber/recipes/rubber/instances.rb @@ -239,6 +239,7 @@ def refresh_instance(instance_alias) instance_item.external_host = instance[:external_host] instance_item.external_ip = instance[:external_ip] instance_item.internal_host = instance[:internal_host] + instance_item.internal_ip = instance[:internal_ip] instance_item.zone = instance[:zone] instance_item.platform = instance[:platform] rubber_instances.save() @@ -270,18 +271,6 @@ def refresh_instance(instance_alias) # re-load the roles since we may have just defined new ones load_roles() unless env.disable_auto_roles - # There's no good way to get the internal IP for a Windows host, so just set it to the external - # and let the router handle mapping to the internal network. - if instance_item.windows? - instance_item.internal_ip = instance_item.external_ip - else - # Connect to newly created instance and grab its internal ip - # so that we can update all aliases - direct_connection(instance_item.external_ip) do - instance_item.internal_ip = capture(print_ip_command).strip - end - end - rubber_instances.save() # Add the aliases for this instance to all other hosts