gcloud compute

gcloud compute コマンドライン ツールを使用すると、Compute Engine API を使用するよりもわかりやすい形式で Google Compute Engine のリソースを管理できます。

gcloud ツールは Cloud SDK の一部で、ステートメントのオートコンプリート、インプレース更新、充実したマニュアル ページ スタイルのヘルプ、人が読める形式とマシンで解析できる形式に対応した出力形式、Google Cloud SDK との統合機能など、さまざまな機能を備えた統合型のコマンドライン ツールです。

Google Compute Engine をまだ有効にしていない場合は、登録の手順を行ってください。また、スタートガイドも参照することをおすすめします。

gcloud compute のインストール

gcloud compute をインストールするには、Google Cloud SDK をインストールします。

gcloud compute の設定

Google Compute Engine は、OAuth2 を使用してアクセスの認証と許可を行います。gcloud compute を使用するには、まず Cloud SDK を承認してプロジェクトにアクセスし、認証トークンを取得する必要があります。

gcloud コマンドライン ツールを初めて使用する場合、gcloud は自動的に default 構成を使用します。ほとんどの場合は、default 構成をそのまま使用して問題ありません。

  1. gcloud init を実行して認証プロセスを開始します。プロンプトが表示されたら、Enter キーを押します。

    コマンドが URL を出力し、プロジェクトへのアクセスをリクエストするためにブラウザ ウィンドウを開こうとします。ブラウザ ウィンドウが開いたら、次の出力が表示されます。

    gcloud init
    

    Welcome! This command will take you through the configuration of gcloud.

    Your current configuration has been set to: [default]

    To continue, you must login. Would you like to login (Y/n)? y

    Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2 Fauth%2Fappengine.admin+https%3A%2F%2...

    ブラウザを開けないことが Cloud SDK によって検知された場合(リモートマシンで作業している場合など)には、下記の出力が表示されます。なお、ローカルマシンで作業していて、ブラウザが URL を自動的に読み込まない場合には、gcloud init コマンドに --console-only フラグを付けて再試行してください。

    gcloud init --console-only
    

    認証 URL をコピーし、ブラウザ内に貼り付けます。その後、確認コードを作業元の端末に貼り付けます。

    Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2 Fauth%2Fappengine.admin+https%3A%2F%2...

    Enter verification code:

  2. アクセスを許可します。

    ブラウザ ウィンドウで、アプリケーションの権限を確認し、準備ができたら [同意する] をクリックします。リモートマシンで作業している場合や、--console-only フラグを使用した場合には、返されたコードをコピーし、コマンドラインの「Enter verification code:」の後に貼り付けます。その他の場合、コードは自動的にコマンドライン ツールに送られます。

  3. この構成の認証情報を選択します。

    認証情報を設定したら、この構成のデフォルトのプロジェクトを選択するよう求めるプロンプトが gcloud によって表示されます。リストからプロジェクト ID を選択します。

    このプロパティを設定すると、コマンドを --project フラグでオーバーライドしたり、CLOUDSDK_CORE_PROJECT 環境変数を設定したりしない限り、すべての gcloud compute コマンドでデフォルトのプロジェクト ID が使用されます。デフォルトのプロジェクトや環境変数を設定しない場合は、実行する各 gcloud compute コマンドに --project フラグを含める必要があります。

gcloud の初回実行時には、プロジェクト メタデータのデフォルトのゾーンとリージョン キーに基づいて、デフォルト ゾーンとデフォルト リージョンが設定されます。ゾーンとリージョンは、ゾーンやリージョンに属するリソースを使用する場合に必要となります(たとえば、仮想マシン インスタンスを操作する際には、必ずゾーンを指定する必要があります)。デフォルトのゾーンとリージョンを設定することで、それらの情報をユーザーがリクエストごと指定しなくても、gcloud がその情報を推定できるようになります。これらのデフォルト設定は、手動でいつでもオーバーライドまたは変更できます。

詳細については、デフォルト プロパティの設定をご覧ください。

構成の使用

gcloud では、複数のアカウントの認証情報を管理しやすくするために、configurations(構成)というコンセプトが使用されます。各構成には、認証に使用するメール アカウントのほか、デフォルト プロジェクト ID やデフォルト ゾーン設定などの設定が含まれます。gcloud は自動的に default 構成を使用してインストールされます。これは、Google Cloud Platform サービスへの認証に認証情報が使用される構成です。

ほとんどのユーザーは、default 構成をそのまま使用して問題ありません。複数のアカウントを切り替える必要がある場合には、追加の構成を作成し、それらを使い分けることもできます。

構成の使用に関する詳細については、gcloud topic configurations をご覧ください。

デフォルト プロパティの設定

現在、プロジェクトを作成して gcloud を初めて使用すると、Compute Engine はプロジェクト メタデータに基づいてデフォルトのゾーンとリージョンを選択し、このプロパティを default 構成に設定します。これらのデフォルト プロパティは、プロジェクトに関するメタデータ情報を取得することで参照できます。

gcloud compute project-info describe

次のメタデータキーを探します。

- key: google-compute-default-region
  value: ...
- key: google-compute-default-zone
  value: ..

これらのプロパティを変更したりオーバーライドしなかった場合、gcloud はすべての gcloud リクエストに対してこれらのプロパティを自動的に指定します。これらのプロパティを変更またはオーバーライドするには、以下の方法を使用します。

メタデータ サーバーでデフォルトのゾーンとリージョンを変更する

メタデータ サーバーへのリクエストを行なうことで、メタデータ サーバー内のデフォルトのゾーンとリージョンを変更できます。次に例を示します。

gcloud compute project-info add-metadata \
    --metadata google-compute-default-region=europe-west1,google-compute-default-zone=europe-west1-b

gcloud コマンドライン ツールは、gcloud init コマンドを再実行するまで新たに変更されたデフォルトのゾーンとリージョンを認識しません。デフォルト メタデータを更新したら、gcloud init を実行して default 構成を再初期化してください。

ローカル クライアントでデフォルトのゾーンとリージョンを設定する

gcloud クライアントで異なるゾーンやリージョンをローカルに設定すれば、メタデータ サーバーを更新することなく、これらのプロパティを手動で選択できます。

最初に、現在使用している構成が、これらのプロパティの設定先として間違っていないことを確認してください。各構成には独自の設定があります。構成を切り替えるには、次のコマンドを実行してください。

gcloud config configurations activate CONFIGURATION_NAME

次に、クライアントでゾーンやリージョンを設定するために、次のコマンドを実行します。

gcloud config set compute/zone ZONE
gcloud config set compute/region REGION

デフォルト プロパティをすべて削除するには、unset コマンドを使用します。

gcloud config unset compute/zone
gcloud config unset compute/region

デフォルト プロパティをすべて削除した場合、gcloud はユーザーがコマンドを実行するたびにゾーンやリージョンの指定を求めます。

環境変数でデフォルト値を設定する

gcloud compute コマンドに値を提供する環境変数を設定できます。環境変数は、gcloud config コマンドを使用して設定したデフォルト プロパティをオーバーライドしますが、--zone--region などの明示的なフラグはオーバーライドしません。

Linux / Mac OS X
export コマンドを使用してゾーンとリージョンの変数を設定します。
$ export CLOUDSDK_COMPUTE_ZONE=ZONE
$ export CLOUDSDK_COMPUTE_REGION=REGION
これらの環境変数を永続化するには、これらのコマンドを ~/.bashrc ファイル内に含め、端末を再起動します。
Windows
set コマンドを使用してゾーンとリージョンの変数を設定します。
C:\> set CLOUDSDK_COMPUTE_ZONE=ZONE
C:\> set CLOUDSDK_COMPUTE_REGION=REGION

特定の --zone フラグや --region フラグをコマンドに含めれば、環境変数をオーバーライドすることもできます。

リクエストごとに値を設定する

特定の --zone フラグや --region フラグをコマンドごとに含めることで、デフォルトのプロパティをオーバーライドすることもできます。次に例を示します。

gcloud compute instances create example-instance --zone us-central1-f

これらのフラグは、使用したコマンド 1 つに対してのみ機能します。これらのフラグはすべてのデフォルト設定をオーバーライドするのではなく、そのリクエストのデフォルト設定のみをオーバーライドします。

デフォルト プロパティの優先順位

gcloud コマンドライン ツールは、各構成について次の順序でデフォルト プロパティを評価します。

  • --zone--region、または --project フラグを明示的に指定した場合は、そのリクエスト 1 件を対象に、その他すべての設定をオーバーライドします。
  • ゾーンとリージョンのデフォルト プロパティがメタデータ サーバーでのみ定義されている場合、gcloud コマンドライン ツールは gcloud init の実行時に、ローカルの gcloud クライアントをそれらのプロパティに設定します。後続のリクエストについては、このツールがユーザーにゾーンの指定を求めます。
  • ゾーンとリージョンのその構成のデフォルト プロパティがメタデータ サーバーとローカル クライアントの両方で定義されている場合、このツールはローカル クライアントのデフォルト プロパティを使用します。
  • ゾーンとリージョンのデフォルト プロパティが、メタデータ サーバー、ローカル クライアント、環境変数で定義されている場合、このツールは使用している構成にかかわらず、環境変数のデフォルト プロパティを使用します。

よく使用される gcloud compute コマンド

インスタンスを扱う際によく実行されるタスクの例を以下に示します。インスタンスに対する一般的な操作の詳細については、インスタンスを参照してください。

インスタンスの作成

instances create コマンドを使用して新規インスタンスを作成します。たとえば、次のコマンドは「us-central1-a」ゾーンに「my-instance」というインスタンスを作成します。

gcloud compute instances create my-instance

--zone フラグを省略した場合、gcloudデフォルト プロパティに基づいてユーザーの希望のゾーンを推定します。

インスタンスに必要なその他の設定(マシンタイプイメージなど)が作成コマンドで指定されていない場合、それらはデフォルト値に設定されます。デフォルト値は、create command のヘルプを表示することで確認できます。

gcloud compute instances create --help

インスタンスの一覧取得

instances list コマンドを使用してインスタンスの一覧を取得する方法は複数あります。次のコマンドを使用すると、人が読める表形式の出力を作成できます。

gcloud compute instances list

正規表現を使用して、返されるインスタンスの一覧を名前で絞り込むこともできます。たとえば、次のコマンドは名前が「my-」で始まるすべてのインスタンスを返します。

gcloud compute instances list --regexp my-.*

--regexp フラグの操作と正規表現の使用に関する詳細については、リソースの取得を参照してください。

1 つのインスタンスに関する詳細を返すには、instances describe コマンドを使用します。たとえば、次のコマンドは「my-instance」に関する情報を返します。

gcloud compute instances describe my-instance --zone us-central1-a

上記のコマンドは結果を YAML 形式で返します。結果の表示方法は、--format フラグを使用して変更することもできます。リソース(インスタンスを含む)の取得と一覧表示の詳細な例については、リソースの取得を参照してください。

インスタンスへの接続

gcloud compute では、インスタンスへの接続が簡単になっています。gcloud compute ssh コマンドと gcloud compute scp コマンドは、SSH と SCP に対するラッパーを提供し、認証とインスタンス名から IP アドレスへのマッピングを処理します。

たとえば、「us-central1-a」ゾーンの「my-instance」に SSH 接続するには、次のコマンドを使用できます。

gcloud compute ssh my-instance --zone us-central1-a

ローカル ファイル「file-1」を「us-central1-a」ゾーンの「my-instance」にコピーするには、次のコマンドを使用できます。

gcloud compute scp ~/file-1 my-instance:~/remote-destination --zone us-central1-a

scp コマンドは、インスタンスからローカルマシンにファイルをコピーする場合にも使用できます。たとえば、「us-central1-a」ゾーンの「my-instance」にある「file-1」のローカルコピーを作成するには、次のコマンドを使用できます。

gcloud compute scp my-instance:~/file-1 ~/local-destination --zone us-central1-a

gcloud compute ssh コマンドと gcloud compute scp コマンドではいずれも、デフォルトで「~/.ssh/google_compute_engine」にある秘密鍵ファイルを使用します。この鍵ファイルを使用したくない場合は、--ssh-key-file フラグを使用して場所を指定することで、別の鍵ファイルを指定することもできます。たとえば、使用したい秘密鍵がすでに用意されている場合や、プロジェクトごとに異なる秘密鍵を使用したい場合には、この方法が便利です。

SSH ベースのプログラムを直接使用する

sshscp を直接使用したい場合、gcloud compute では、インスタンスのホスト エイリアスと認証構成を含んだ SSH 構成ファイルを生成できます。これを行うには、次のコマンドを実行します。

gcloud compute config-ssh

次に示すのは、SSH 構成ファイル(~/.ssh/config)にエイリアスを 1 つ追加した場合の例です。

Host my-instance.us-central1-a.myproject
HostName 107.178.220.224
IdentityFile ~/.ssh/google_compute_engine
UserKnownHostsFile=/dev/null
CheckHostIP=no
StrictHostKeyChecking=no

--ssh-config-file フラグを使用して、ユーザー単位の代替 SSH 構成ファイルを指定することもできます。

インスタンスの追加や削除を行った後には、必ず config-ssh コマンドを再実行してください。

config-ssh コマンドを使用して SSH 構成ファイルを更新したら、任意の SSH ベース プログラムを使用してインスタンスにアクセスできるようになります。たとえば、「myproject」というプロジェクトの「us-central1-a」ゾーンにある「my-instance」というインスタンスの場合は、OpenSSH SSH クライアントを次のように使用できます。

$ ssh my-instance.us-central1-a.myproject

インスタンス上にある「file-1」ファイルのローカルコピーを作成するには、OpenBSD SCP クライアントを次のように使用できます。

$ scp my-instance.us-central1-a.myproject:~/file-1 .

メタデータの操作

サーバーで定義されたメタデータの外部に、インスタンスやプロジェクトのカスタム メタデータを設定することもできます。これは、プロジェクトやインスタンスに任意の値を渡し、それらに対するクエリをインスタンス上のコードから実行できるようにしたい場合に便利です。このセクションでは、一般的なメタデータ操作についていくつか紹介します。メタデータの操作に関するより詳細な情報については、メタデータの保存と取得を参照してください。

インスタンス メタデータの追加と削除

gcloud compute でのインスタンス メタデータの構成は、create コマンドを使用してインスタンスを作成する際に行うこともできますし、add-metadata コマンドと remove-metadata コマンドを使用して既存のインスタンスに対して行うこともできます。メタデータは、等号(=)で区切られたキーと値のペアとして、--metadata フラグを使用して指定されます。また、メタデータは --metadata-from-file フラグを使用してローカル ファイルから読み取ることができます。

たとえば、「us-central1-a」ゾーンの「my-instance」という既存のインスタンスに、「role」、「unique-id」、「build-num」というカスタム メタデータキーを追加するには、次のコマンドを使用できます。

gcloud compute instances add-metadata my-instance \
    --zone us-central1-a \
    --metadata role=worker unique-id=1234 build-num=4.32

カスタム メタデータキー「role」と「unique-id」を削除するには、次のコマンドを使用できます。

gcloud compute instances remove-metadata my-instance \
    --zone us-central1-a \
    --keys role unique-id

既存のインスタンスのメタデータを追加または削除した後に次のコマンドを実行すると、行った変更を確認できます。

gcloud compute instances describe my-instance --zone us-central1-a
...
metadata:
  fingerprint: eU448B6JGQw=
  items:
  - key: build-num
    value: '4.32'
  kind: compute#metadata
...

既存のメタデータを変更したり、新しいメタデータを追加したりするには、add-metadata コマンドを使用します。インスタンス メタデータの更新は追加型です。つまり、追加または変更したいメタデータキーを指定するだけでよいということです。既存のキーを指定した場合は、そのキーの値が新しい値で更新されます。

Google Compute Engine ツールがインストールされたイメージの場合、起動スクリプト機能のために予約されるメタデータキーが 2 つあります。

  • startup-script: スクリプトの内容がインスタンスの起動時に実行されることを示します。スクリプトの内容が比較的長い場合は、--metadata-from-file フラグを使用して、スクリプトの内容を含んだファイルへのパスを渡すこともできます。
  • startup-script-url: 一般公開された場所にあるスクリプトが、インスタンスの起動時に実行されることを示します。

たとえば、--metadata フラグで指定された起動スクリプトの内容を使用して、「us-central1-a」ゾーンに「my-instance」というインスタンスを作成するには、次のコマンドを使用できます。

gcloud compute instances create my-instance --zone us-central1-a \
    --metadata startup-script="echo 'hello world'"

「my-instance」に SSH 接続してシステムログ(/var/log/syslog)をチェックすると、起動スクリプトの結果を確認できます。

--metadata-from-file フラグを使用すれば、「my-instance」という既存のインスタンスについて、ローカル ファイルから次の起動スクリプトを追加できます。

gcloud compute instances add-metadata my-instance \
    --metadata-from-file startup-script=/local/path/to/script/startup

この例では、起動スクリプトはインスタンスの再起動時に実行されます(たとえば、gcloud compute instances reset を使用した場合)。

プロジェクト レベルのメタデータの追加と削除

プロジェクト レベルのメタデータは、プロジェクト内のすべてのインスタンスからアクセスできます。 プロジェクトには、デフォルトで予約されたプロジェクト レベルのメタデータがあります。カスタムのプロジェクト レベル メタデータを追加したり削除することもできます。インスタンス メタデータと同様、プロジェクト メタデータの更新も追加型です。つまり、追加または変更したいメタデータキーを指定するだけでよいということです。既存のキーを指定した場合は、そのキーの値が新しい値で更新されます。

既存のプロジェクト レベル メタデータを確認するには、project-info describe コマンドを使用します。

gcloud compute project-info describe

次のコマンドは、プロジェクト レベルのメタデータを 2 つ追加します。

gcloud compute project-info add-metadata \
    --metadata-from-file startup-script=/local/path/to/script
    --metadata startup-id=1234

startup-script キーが予約されていますが、これは、指定されたローカル ファイルの内容がインスタンスの起動時に実行されることを意味します。

追加した 2 つのメタデータを削除するには、次のコマンドを使用します。

gcloud compute project-info remove-metadata --keys startup-script startup-id

インスタンスの削除

「us-central1-a」ゾーンにある「my-instance」というインスタンスを削除するには、instances delete コマンドを使用できます。

gcloud compute instances delete my-instance --zone us-central1-a

インスタンスの作成時には、永続ディスクも作成されます。このディスクはディスク割り当てに加算され、ユーザーには永続ディスクの月額使用料が請求されます。instances delete コマンドによってインスタンスを削除すると、デフォルトでは、インスタンスに関連付けられている永続ディスクも削除されます。この動作をオーバーライドするには、次のコマンドを使用できます。

  • instances delete コマンドの --keep-disks フラグを使用します。
  • ディスクが自動削除されないように構成します。インスタンスの作成後、インスタンスが削除される前に instances set-disk-auto-delete コマンドを使用することで、永続ディスクを保持することができます。なお、instances delete コマンドの --delete-disks フラグを使用した場合は、自動削除の構成に関係なくディスクが削除されます。

詳細については、永続ディスクの自動削除の設定を参照してください。

オペレーションの一覧取得

オペレーションとは、Google Compute Engine リソースに対する変更の記録です。プロジェクト内でのすべてのオペレーションの一覧を取得するには、operations list コマンドを使用します。

gcloud compute operations list

オペレーションには、list リクエストで返されるオペレーションを絞り込むために使用できるスコープがあります。たとえば、--global--zones--regions フラグを使用して、結果を絞り込むことができます。次のコマンドは、「us-central1-a」ゾーンと「us-central1-b」ゾーンでのオペレーションのみを返します。

gcloud compute operations list --zones us-central1-a,us-central1-b

リソース(オペレーションを含む)の取得と一覧表示に関するその他の例については、リソースの取得を参照してください。

ヘルプページの取得

次のコマンドは、gcloud compute コマンドに関する一般的なヘルプから、リソース グループ(instances)やコマンド(create)に関する特定のヘルプに至るまで、さまざまなタイプのヘルプにアクセスする方法を示しています。すべてのリソースとコマンドを対象とした包括的なヘルプも、このパターンでアクセスできます。

gcloud compute --help
gcloud compute instances --help
gcloud compute instances create --help

--help フラグの代わりに -h フラグを使用すれば、クイックヘルプを取得できます。包括的ヘルプは、Cloud SDK リファレンスでも参照できます。

gcloud ツールの構成に使用するコマンドについて包括的なヘルプを表示するには、次のコマンドを実行します。

gcloud topic TOPIC

TOPIC の箇所には、取得したいヘルプのトピック名を指定します。ヘルプを取得できるトピックの一覧については、gcloud topic リファレンス ドキュメントをご覧ください。

次のステップ

これで、gcloud compute ツールを使用できるようになりました。開始にあたっては次も参考になります。

フィードバックを送信...

Compute Engine ドキュメント