AWS EC2 での bash プロンプトに、設定したEC2 Instance Nameを表示する
「ログインしたEC2 instance のプロンプトには Private IP address ベースのホスト名が表示されているだけで、どのマシンにログインしたのかパット見では分からない。なんとかならない?」という相談を受けたので、いろいろと考えてみた。
結論からすれば、EC2 Instance を立ち上げる時にホスト名をつけたり、Tagをつけたりするので、それを bash のプロンプトに表示させてしまえばOKだろう。
ということで、
元ネタ: EC2インスタンスにtagで付けた名前をサーバー内から取得する
結論からすれば、EC2 Instance を立ち上げる時にホスト名をつけたり、Tagをつけたりするので、それを bash のプロンプトに表示させてしまえばOKだろう。
ということで、
- EC2 Instance のIAMロールで、
AmazonEC2ReadOnlyAccess
を割り当てる。 /etc/profile.d/instance_name.sh
に、下記のようなものを置いてみた。
#!/bin/bash
# get availability zone name
z="$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//g')"
# get instance-id myself
instance_id="$(curl -s http://169.254.169.254/latest/meta-data/instance-id/)"
# get Name from tags
aws_tag_name="$(aws --region $z ec2 describe-instances --instance-ids $instance_id --output text --query 'Reservations[].Instances[].Tags[?Key==`Name`].[Value]')"
PS1="[u@h ${aws_tag_name} W]n$ "
元ネタ: EC2インスタンスにtagで付けた名前をサーバー内から取得する
コメント
コメントを投稿