Amazon EC2で/etc/hostsに自動でホスト名を書き込む
細かすぎて伝わらないテクニックです
Amazon LinuxやRHELを使っていると、ip-XXX-XXX-XXX-XXXが見つかりませんというアラート表示を良く見かけます。これは、単純に/etc/hostsにレコードが無いから。じゃぁなぜip-XXX-XXX-XXX-XXXって聞いてくるのか?これはホスト側が勝手に設定しているから。それじゃぁこのギャップを埋めよう。
起動時にスクリプトを実行
OS起動時にスクリプトを実行する下地を作ります。インクルード処理ですね。
$ sudo vi /etc/rc.local
if [ -d /etc/rc.local.d ]; then #パス内のシェルを全て実行する for i in /etc/rc.local.d/*; do if [ -r $i ]; then . $i fi done unset i fi
ホスト名を追加します
ホスト名を取得するにはhostnameコマンドです。これを/etc/hostsに追記します。
$ sudo mkdir /etc/rc.local.d $ cd /etc/rc.local.d/ $ sudo vi add_hostname
sed -i -e "1s/ip-.*//g" /etc/hosts sed -i -e "1s/$/ $(hostname)/g" /etc/hosts
最初の行で、ソースの1行目のip-で始まる文字列以降を削除します。次の行で、ソース1行名の最後にホスト名を追加します。これだけです。これにより、以下のような結果になります。
$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain ip-10-0-0-10
これでホスト名に関するログやアラートが消えると思うんだなー。
まとめ
再起動のたびに自分のホスト名を調べて/etc/hostsに設定することができます。ノーメンテナンスっす。この細かさ伝わったなかぁ。。。細かいけどイイ感じと思った方は是非イイねをw