LoginSignup
1
0

More than 5 years have passed since last update.

GCEのインスタンス内からインスタンスのzoneを取得。ついでにメタデータの処理。

Last updated at Posted at 2016-06-24

コメントで教えていただいた。

$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone 
projects/XXXXXXXXXXX/zones/asia-east1-b

hostがmetadata.googl.internalになっているのがミソっぽい。
Compute Engine API側になくて全然気づかなかった。

asia-east1-bだけ欲しいならbasenameを使うのがよさそう。

$ basename $(curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone)
asia-east1-b

蛇足

jqが使えるなら一括で取得しておいて使いまわすのもよいかもしれない。

$ METADATA=$(curl -s -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=json")
$ echo $METADATA | jq '.instance.zone'
"projects/XXXXXXXXXXXXX/zones/asia-east1-b"
$ basename $(echo $METADATA | jq -r '.instance.zone')
asia-east1-b

メタデータをザクっと確認するなら

$ curl -s -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMeta
data/v1/?recursive=true&alt=text"

とするのがよさそう。

たとえばinstance/disks/1/device-nameのデータがとりたいなら

$ echo $METADATA | jq '.instance.disks[1].deviceName'

で取得できる。pathの変換が必要なのでいい感じに取得する方法がないか悩ましい。

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0