このページでは、gcloud コマンドライン ツールを使用して Compute Engine リソースを管理するときに役立つヒントを紹介します。使用できるすべての gcloud compute フラグとコマンドの一覧については、組み込みのコマンドヘルプ(--help)を使用するか、公開されているリファレンス ドキュメントまたは gcloud core のドキュメントをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
-
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
- Set a default region and zone.
-
リソースに関する情報の取得
Compute Engine リソースに関する情報をフェッチするには、2 つの方法があります。リソースの一覧を取得する場合は、list コマンドを使用します。特定の 1 つのリソースに関する詳細を取得する場合は、describe コマンドを使用します。
list コマンドを使用してリソースを取得する
list コマンドは、リクエストされたリソースに関する特に重要なデータを、人が読める表にまとめて返すよう設計されています。必要に応じて、結果を絞り込むフィルタを使用すると、より短いリストで関連性の高い結果を取得できます。
- 正規表現による名前の絞り込み
- RE2 構文を使用して、リソース名(たとえば、インスタンス名やディスク名)を絞り込むことができます。
gcloud compute instances listコマンド の詳細を調べる。 - コマンドのフラグ
--limit返される結果の最大件数です。このフラグは、describe コマンドを使用してリソースを取得するセクションで説明されている
--sort-byフラグと一緒に使用すると特に便利です。--sort-by SORT_BY並べ替えの基準となるフィールドです(該当する場合)。降順の並べ替えを実行するには、値の前に波形ダッシュ(~)を付けます。このフラグは、
--flatten、--sort-by、--filter、--limitの順序で適用される他のフラグと連携します。
describe コマンドを使用してリソースを取得する
describe コマンドは、1 つのリソースに関するデータを表示するように設計されています。describe コマンドではリソースの名前を指定する必要があります。リソース名を思い出せない場合は、list コマンドを実行してリソースの一覧を取得できます。たとえば、次の 2 つのコマンドは、イメージを一覧表示してイメージ名とそれに関連付けられたプロジェクトを取得し、それらを describe コマンドへの入力として指定するというシナリオを説明したものです。
gcloud compute images list
NAME PROJECT FAMILY DEPRECATED STATUS ... centos-7-v20170620 centos-cloud centos-7 READY ... debian-9-stretch-v20170619 debian-cloud debian-9 READY ...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud
describe コマンドからのデフォルトの出力は YAML 形式ですが、--format フラグを使用して、JSON、YAML、テキストの出力形式から目的の形式を選択することもできます。
JSON 形式の出力は出力を解析する場合に便利です。テキスト形式の出力では、各プロパティが個別の行に配置されます。
gcloud compute regions describe us-central1 --format json
{
"creationTimestamp": "2013-09-06T10:36:54.847-07:00",
"description": "us-central1",
"id": "6837843067389011605",
"kind": "compute#region",
"name": "us-central1",
...
"status": "UP",
"zones": [
"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
]
}例
list コマンドの例
リソースの一覧を取得する際には、概要データを読みやすい表で取得できます。たとえば、プロジェクト内のインスタンスに関する概要データを取得するには、instances list コマンドを使用します。
gcloud compute instances list
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS example-instance asia-east1-b e2-standard-2 10.240.95.199 107.167.182.44 RUNNING example-instance2 us-central1-a e2-standard-2 10.240.173.254 23.251.148.121 RUNNING test-instance us-central1-a e2-standard-2 10.240.118.207 23.251.153.172 RUNNING
正規表現によって list コマンドからの結果を絞り込むには、key ~ value 演算子を使用した --filter フラグを指定します。たとえば、次のようにインスタンス名に「test」が含まれるインスタンスだけをインスタンス一覧を含めて、結果を絞り込むことができます。
gcloud compute instances list --filter="name ~ .*test.*"
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS test-instance us-central1-a e2-standard-2 10.240.118.207 23.251.153.172 RUNNING
status が DONE で、httpStatus が 200 ではないゾーン オペレーションの一覧を取得するには、operations list コマンドに zone フィルタを適用し、その結果を grep で処理します。
gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep -v 200
NAME HTTP_STATUS TYPE TARGET STATUS operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400 delete us-central1-a/disks/example-instance DONE operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409 insert us-central1-a/instances/i-1 DONE operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409 insert us-central1-a/instances/i-2 DONE
us-central1-a 内のディスクの一覧を名前の降順(--sort-by ~NAME)で取得するには、disks list コマンドを次のように使用します。
gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"
シナリオによっては、リソースへの完全 URI リンクを取得する必要が生じることがあります。たとえば、リソースリンクの一覧を入力として受け取るコマンドやアプリケーションに list コマンドからの出力を渡す場合などです。完全 URI のリソースリンクを表示するには、list コマンドで --uri フラグを使用します。
gcloud compute instances list --uri --filter="name~'^example-.*'"
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1 https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2
上記の list コマンド出力を、インスタンスを削除するコマンド内で使用するには、次のコマンドを使用します。
gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")
describe コマンドの例
1 つのインスタンスのみについて詳細情報を取得するには、インスタンス(ゾーンを含む)を指定します。たとえば、「asia-east1-b」ゾーンにある「example-instance」というインスタンスについての情報を取得するには、instances describe コマンドを次のように使用します。
gcloud compute instances describe example-instance --zone asia-east1-b
デフォルトでは、このコマンドは YAML 出力を返します。出力を JSON やテキスト(1 行に 1 プロパティずつ)に変更するには、--format フラグを使用します。たとえば、同じインスタンスについてテキスト出力を返すには、次のコマンドを使用します。
gcloud compute instances describe example-instance --zone asia-east1-b --format text
--- canIpForward: False creationTimestamp: 2014-04-19T06:43:04.087-07:00 disks[0].autoDelete: False disks[0].boot: True disks[0].deviceName: example-instance ...
特定のオペレーションに関する詳細情報を取得するには、まず、operations list コマンドを使用して、そのオペレーションの完全修飾 URI を確認します。
gcloud compute operations list --filter="zone:(us-central1-a)"
NAME TYPE TARGET HTTP_STATUS STATUS operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance 200 DONE operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2 200 DONE ...
次に、その URI を operations describe コマンドで使用します。
gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00' id: '31755455923038965' insertTime: '2014-07-23T15:39:25.910-07:00' kind: compute#operation name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 operationType: delete progress: 100 ...
次のコマンドは、インスタンス設定を JSON 形式(--format json)で取得します。
gcloud compute instances describe example-instance \
--zone us-central1-a
--format json
{
...
"name": "example-instance",
"networkInterfaces": [
{
"accessConfigs": [
{
"kind": "compute#accessConfig",
"name": "external-nat",
"natIP": "107.167.187.66",
"type": "ONE_TO_ONE_NAT"
}
],
"name": "nic0",
"network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
"networkIP": "10.240.111.51"
}
],
...
"status": "RUNNING"
...
}自分がどのユーザーとして承認されているかをチェックする
自分がどのアカウントとして承認されているかを確認するには、次のコマンドを使用します。
gcloud auth list
更新トークンの取り消し
Google Cloud CLI を使用しているマシン上のアカウントに対する認証情報を取り消すには、次のコマンドを使用します。
gcloud auth revoke
これを実行すると、gcloud init を使用して再認証を行わなければならなくなります。
なお、gcloud CLI からリソースにアクセスするための権限を取り消すこともできます。これは、たとえば更新トークンが不正使用された場合などに行います。gcloud CLI の権限を取り消す手順は次のとおりです。
- Google アカウント ページにログインします。
- [セキュリティ] をクリックし、次に [アカウント権限] セクションの [すべて表示] をクリックします。
- [Google Cloud SDK] を選択し、[アクセスを取り消す] をクリックします。
インスタンスの再起動
「us-central1-a」ゾーン内の「example-instance」というインスタンスをリセットするには、次の instances reset コマンドを使用します。
gcloud compute instances reset example-instance --zone us-central1-a
リセットがもたらす影響については、インスタンスのリセットのドキュメントをご覧ください。