Querying the network interface will only return the internal instance IP address info.
Is it possible to get external IP address info from somewhere inside the running instance?
As an example, AWS has a metadata REST endpoint for instance info:curl http://169.254.169.254/latest/meta-data/public-ipv4
(source: http://tech-queries.blogspot.co.uk/2011/06/how-to-get-public-ip-for-amazon-ec2.html)
You can get the public IP address with an HTTP GET of http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
. You must set the Metadata-Flavor header to Google as per the documentation.
Here are the links for getting Public IPv4 on various clouds.
Azure
curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"
AWS
curl http://169.254.169.254/latest/meta-data/public-ipv4
GCP
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
Since 169.254.169.254 is a global metadata server for these above cloud vendors, no need to use different domain names.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With