From 7dafc3be01daefcc016d15b836bdd24169f48452 Mon Sep 17 00:00:00 2001 From: Ken Cochrane Date: Fri, 9 Jun 2017 16:06:51 -0400 Subject: [PATCH] Added more AWS metadata to /var/config Signed-off-by: Ken Cochrane --- pkg/metadata/provider_aws.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pkg/metadata/provider_aws.go b/pkg/metadata/provider_aws.go index b3c8ff49f..37d68b47b 100644 --- a/pkg/metadata/provider_aws.go +++ b/pkg/metadata/provider_aws.go @@ -47,6 +47,25 @@ func (p *ProviderAWS) Extract() ([]byte, error) { return nil, fmt.Errorf("AWS: Failed to write hostname: %s", err) } + // public ipv4 + awsMetaGet("public-ipv4", "public_ipv4", 0644) + + // private ipv4 + awsMetaGet("local-ipv4", "local_ipv4", 0644) + + // availability zone + awsMetaGet("placement/availability-zone", "availability_zone", 0644) + + // instance type + awsMetaGet("instance-type", "instance_type", 0644) + + // instance-id + awsMetaGet("instance-id", "instance_id", 0644) + + // local-hostname + awsMetaGet("local-hostname", "local_hostname", 0644) + + // ssh if err := p.handleSSH(); err != nil { log.Printf("AWS: Failed to get ssh data: %s", err) } @@ -61,6 +80,21 @@ func (p *ProviderAWS) Extract() ([]byte, error) { return userData, nil } +// lookup a value (lookupName) in aws metaservice and store in given fileName +func awsMetaGet(lookupName string, fileName string, fileMode os.FileMode) { + if lookupValue, err := awsGet(metaDataURL + lookupName); err == nil { + // we got a value from the metadata server, now save to filesystem + err = ioutil.WriteFile(path.Join(ConfigPath, fileName), lookupValue, fileMode) + if err != nil { + // we couldn't save the file for some reason + log.Printf("AWS: Failed to write %s:%s %s", fileName, lookupValue, err) + } + } else { + // we did not get a value back from the metadata server + log.Printf("AWS: Failed to get %s: %s", lookupName, err) + } +} + // awsGet requests and extracts the requested URL func awsGet(url string) ([]byte, error) { var client = &http.Client{