このページでは、gcloud
コマンドライン ツールを使用して Compute Engine リソースを管理するときに役立つヒントを紹介します。使用できるすべての gcloud compute
フラグとコマンドの一覧については、組み込みのコマンドヘルプ(--help
)を使用するか、公開されているリファレンス ドキュメントまたは gcloud core のドキュメントをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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
リセットがもたらす影響については、インスタンスのリセットのドキュメントをご覧ください。