カテゴリー
サイト構築

GCEでインスタンスのインスタンステンプレートを一括で確認するコマンド

自動化は進む

 Google Compute Engineで各インスタンスが、どのインスタンステンプレートを元に生成されているかを一括表示するコマンドを作りました。

前回記事

 前回の記事では、オートスケール構成でインスタンスグループのインスタンスのテンプレートを更新するのをコマンド貼り付けでなるべくやれるようにしました。

 ただし、既にオートスケールで起動しているインスタンスを再作成する部分で、いったいどのインスタンスが新しいテンプレートで動いているか、調べるのが面倒という課題がありました。

 今回は、それをコマンド一発で確認する方法を紹介します。

jq のインストール

 インスタンスがどのテンプレートで動いているかは、以下のコマンドでわかります。

gcloud compute instances describe web-xxxx | grep instanceTemplates

describeの後はインスタンス名ですね。
まあ、これをシェルコマンドでループさせればいいんですが、せっかくなのでjson形式のデータを処理してインスタンス名を列挙してみます。

 まずは、コマンドでjsonを処理できる「jq」をインストールします。Macだと「brew install jq」で一発です。先に「brew update」をしないとnot foudになるかもしれないので注意。

 El Capitanでうまく行かない人はこちらを参照してみるといいと思います。

MacをOS X 10.11 El Capitanにアップデートし”/usr/local”ディレクトリを消してしまった場合、Homebrewをどの様にインストールすればよいのか? : Appleちゃんねる

 jq コマンドはこんな感じで使います↓

 便利だな。これ。

シェルでループして取得

 先にコマンドを出すと、これです↓

gcloud compute instances list | awk -F " " 'NR>1 {print $1}' | while read line; do echo ${line} `gcloud compute instances describe ${line} --format json | jq -r '.metadata.items[] | select( .key == "instance-template") | .value'` ; done

 「gcloud compute instances list」でインスタンスの一覧を取得し、awk コマンドでヘッダはスキップして、2行目以降の1列目に出ているインスタンス名を取得。それを引数にして、「gcloud compute instances describe」コマンドでインスタンスの情報をjsonで取得。jq コマンドを使って、「instance-template」の値を表示ということをやっている。インスタンス分gcloudコマンドをたたいているので、ちょっと結果が出てくるのに時間がかかる。

 こんな感じで出る↓

db
web-7oat projects/xxxx/global/instanceTemplates/ins-template-web02
web-8s49 projects/xxxx/global/instanceTemplates/ins-template-web03
web-aczz projects/xxxx/global/instanceTemplates/ins-template-web03
web-mqi7 projects/xxxx/global/instanceTemplates/ins-template-web02
web-nwie projects/xxxx/global/instanceTemplates/ins-template-web03

 インスタンステンプレート使ってないインスタンスがあるとエラーが最初に出たりするけど、結果は綺麗になっているので、よしとしています。

 他に方法があるかもしれませんが、今のところこれしかわからなかった。ともあれこれで、各インスタンスがどのインスタンステンプレートで動いているかは一覧で確認できるようになった。

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Twitter
Mastodon
Facebook

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください