Skip to content

Instantly share code, notes, and snippets.

@djravine
Last active March 6, 2017 02:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djravine/3dfd2d4580f1f31bdaa704b5d4bca583 to your computer and use it in GitHub Desktop.
Save djravine/3dfd2d4580f1f31bdaa704b5d4bca583 to your computer and use it in GitHub Desktop.
Create Environment Variables in EC2 Hosts from EC2 Host Tags, just like Beanstalk or Heroku does!
######
# Author: Marcello de Sales (marcello.desales@gmail.com)
# Modifier: Adan Rehtla (Adan@AdanRehtla.com)
# Description: Create Create Environment Variables in EC2 Hosts from EC2 Host Tags
# Original GIST: https://gist.github.com/marcellodesales/a890b8ca240403187269
#
### Requirements:
# * Install jq library (sudo apt-get install -y jq awscli)
# * Install the EC2 Instance Metadata Query Tool (http://aws.amazon.com/code/1825)
#
### Installation:
# * Add the Policy EC2:DescribeTags to a User
# * aws configure
# * Souce it to the user's ~/.profile that has permissions
####
# Add tags to an EC2 host or Image Profile
# Reboot and verify the result of $(env).
# Loads the Tags from the current instance
getInstanceTags () {
# http://aws.amazon.com/code/1825 EC2 Instance Metadata Query Tool
INSTANCE_ID=$(ec2metadata | grep instance-id | awk '{print $2}')
# Describe the tags of this instance
aws ec2 describe-tags --region sa-east-1 --filters "Name=resource-id,Values=$INSTANCE_ID"
}
# Convert the tags to environment variables.
# Based on https://github.com/berpj/ec2-tags-env/pull/1
tags_to_env () {
tags=$1
for key in $(echo $tags | /usr/bin/jq -r ".[][].Key"); do
value=$(echo $tags | /usr/bin/jq -r ".[][] | select(.Key==\"$key\") | .Value")
key=$(echo 'AWS_'$key | /usr/bin/tr '-' '_' | /usr/bin/tr ':' '_' | /usr/bin/tr '[:lower:]' '[:upper:]')
echo "$key=$value"
export $key="$value"
done
}
# Execute the commands
instanceTags=$(getInstanceTags)
tags_to_env "$instanceTags"
@djravine
Copy link
Author

djravine commented Mar 6, 2017

Update to Original GIST: https://gist.github.com/marcellodesales/a890b8ca240403187269

  • Added ENV VAR prefix 'AWS_' to all keys.
  • Text replace ':' with '_' as some AWS keys have this invalid colon char

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment