2

タグ「名前」からAmazon EC2ホスト名を設定しようとしています

そして、インスタンスデータからタグを抽出する答えを見つけました。

ec2-describe-tags \
  --filter "resource-type=instance" \
  --filter "resource-id=$(ec2-metadata -i | cut -d ' ' -f2)" \
  --filter "key=Name" | cut -f5

結果は次のとおりです。

+------------+--------------+------+--------+
| resourceId | resourceType | key  | value  |
+------------+--------------+------+--------+
| i-1xxxxxxx | instance     | Name | dev200 |
+------------+--------------+------+--------+

ほぼそこにいることがわかりますが、上記の結果から値(dev200)を取得するにはどうすればよいですか? 次に、次の場所で使用できます。

echo $HOSTNAME > /etc/hostname

ps インスタンスに BASH がありますが、 bash ドキュメントで完全に失われています。誰かが私に正しい段落を教えてもらえますか?

4

2 に答える 2

4

いくつかのエラーと試行の後、スクリプトが機能するようになりました:

#!/bin/bash
hostname=`ec2-describe-tags --filter "resource-type=instance" \
  --filter "resource-id=$(ec2-metadata -i | cut -d ' ' -f2)" \
  --filter "key=Name" | grep Name`

IFS="|" read -ra NAME <<< "$hostname"
hostname=${NAME[4]}
echo $hostname

IFS を使用して、文字列を解析して配列にしました。幸いなことに、4 番目の要素は常にホスト名であることがわかりました。

編集 (20-DEC-2012): これが投稿されてから短期間で、関連する ec2 コマンド ライン ツールのいくつかが変更され、フラグが変更または非推奨になりました (たとえば、上記の -i フラグは動作しなくなったようですec2metadata の現在のバージョン)。それを念頭に置いて、現在のマシンの「名前」タグを取得するために使用したコマンドラインスクリプトを次に示します(スクリプトの残りの部分とは話せません):

ec2-describe-tags --filter "resource-type=instance" --filter "resource-id=$(ec2metadata --instance-id)" | awk '{print $5}'

Debian/Ubuntu では、これらを機能させる必要がありますapt-get install cloud-utils ec2-api-tools(後者は Ubuntu Multiverse のみです)。

于 2012-09-04T18:42:35.643 に答える
0

curl は通常インストールされているため、そのまま使用できます。

assigned_host_name=$(curl ' http://169.254.169.254/latest/meta-data/assigned_host_name ') assigned_domain_name=$(curl ' http://169.254.169.254/latest/meta-data/assigned_domain_name ')

次に、割り当てられた値に以下のような 404 HTML メッセージが含まれていないことを確認します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>404 - Not Found</title> </head> <body> <h1>404 - Not Found</h1> </body> </html>

次に、ホスト名に割り当てたい魔法を実行します。今日の後半にこれを編集して、それを行った方法を追加します。

于 2016-06-05T15:57:57.410 に答える