Last active
August 18, 2023 15:16
-
-
Save swithrow/05add0d405f7cce18265 to your computer and use it in GitHub Desktop.
EC2 Instance Name Tag in the bash prompt.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# copy this into /etc/profile.d/instance-name-tag.sh | |
# | |
# you will need: | |
# - curl, jq, and aws cli installed | |
# - an IAM role that gives the EC2 instance access to describe tags | |
# | |
## get instance info | |
INSTANCE=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|jq .instanceId|tr -d '"') | |
## use region the instance is in as default region | |
export AWS_DEFAULT_REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|jq .region|tr -d '"') | |
## make sure aws stuff is in the path | |
PATH="/opt/aws/bin:$PATH" | |
## grab the Name tag for this instance | |
NAMETAG=$(aws ec2 describe-tags --filters Name=resource-id,Values=$INSTANCE Name=key,Values=Name|jq ".Tags[0].Value"|tr -d '"') | |
export PS1="\\t [\\u@${NAMETAG} \\W]\\\$ " |
it's great but jq is not always installed, I use below if it helps someone
INSTANCE_ID=$(wget -qO- http://instance-data/latest/meta-data/instance-id)
REGION=$(wget -qO- http://instance-data/latest/meta-data/placement/availability-zone | sed 's/.$//')
export PS1="$(aws ec2 describe-tags --region $REGION --filter "Name=resource-id,Values=$INSTANCE_ID" --output=text | cut -f5)$ "
Howdy, I have created a sample script as well: https://gist.github.com/miglen/e2e577b95acf1171a1853871737323ce
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The
tr
invocations can be avoided by using jq's raw mode, iejq -r ...