チェックポイント
Create a virtual machine with gcloud
/ 100
Cloud Shell と gcloud のスタートガイド
GSP002
概要
Cloud Shell を使用すると、Google Cloud でホストされているコンピューティング リソースにコマンドラインでアクセスできます。Debian ベースの仮想マシンである Cloud Shell は、5 GB の永続的なホーム ディレクトリを備えており、Google Cloud のプロジェクトやリソースを容易に管理できます。gcloud
コマンドライン ツールとその他の必須ユーティリティは Cloud Shell にプリインストールされており、簡単に起動して実行することができます。
このハンズオンラボでは、Cloud Shell と gcloud
ツールを使用して、Google Cloud でホストされているコンピューティング リソースに接続する方法について学びます。
基本的なコンセプトを理解できるよう、コマンドは手動で入力することをおすすめしますが、多くのラボで、必要なコマンドが含まれたコードブロックが提供されています。コードブロックのコマンドをコピーして、該当する場所に貼り付けることもできます。
演習内容
-
gcloud
コマンドの使い方について実践しながら学ぶ。 - Google Cloud でホストされているコンピューティング サービスに接続する。
前提条件
- Linux の標準的なテキスト エディタ(
vim
、emacs
、nano
など)を使い慣れていること。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Cloud Shell を有効にした後にコマンドラインを使用して、Cloud SDK の gcloud
ツールや、仮想マシン インスタンスで利用可能なその他のツールを起動できます。このラボでは、後ほど $HOME
ディレクトリを使用します。このディレクトリを使うと、ファイルを永続ディスク ストレージに保存して、複数のプロジェクトと Cloud Shell セッションで使用することができます。$HOME
はプライベート ディレクトリであるため、他のユーザーはアクセスできません。
タスク 1. 環境を構成する
ここでは、開発環境の設定可能な要素について学習します。
リージョンとゾーンについて
一部の Google Compute Engine のリソースは、リージョンまたはゾーンに含まれています。リージョンとは、リソースを実行できる特定の地理的位置のことです。各リージョンには、1 つまたは複数のゾーンがあります。たとえば、リージョン us-central1
は米国中部を指し、このリージョンには us-central1-a
、us-central1-b
、us-central1-c
、us-central1-f
の各ゾーンが含まれています。次のテーブルは各リージョン内のゾーンを示しています。
米国西部 | 米国中部 | 米国東部 | 西ヨーロッパ | 東アジア |
---|---|---|---|---|
us-west1-a | us-central1-a | us-east1-b | europe-west1-b | asia-east1-a |
us-west1-b | us-central1-b | us-east1-c | europe-west1c | asia-east1-b |
- | us-central1-c | us-east1-d | europe-west1-d | aisia-east1-c |
- | us-central1-f | - | - | - |
ゾーン内にあるリソースをゾーンリソースと呼びます。 仮想マシン インスタンスと永続ディスクはゾーンに含まれています。 永続ディスクを仮想マシン インスタンスにアタッチする場合は、両方のリソースを同じゾーン内に配置する必要があります。同様に、静的 IP アドレスをインスタンスに割り当てるには、そのインスタンスを静的 IP アドレスと同じリージョンに配置する必要があります。
-
リージョンを
に設定します。 gcloud config set compute/region {{{project_0.default_region | REGION}}} -
プロジェクトのリージョンの設定を表示するには、次のコマンドを実行します。
gcloud config get-value compute/region -
ゾーンを
に設定します。 gcloud config set compute/zone {{{project_0.default_zone | ZONE}}} -
プロジェクトのゾーンの設定を確認するには、次のコマンドを実行します。
gcloud config get-value compute/zone
プロジェクトの情報を確認する
-
プロジェクト ID をクリップボードまたはテキスト エディタにコピーします。プロジェクト ID は次の 2 か所に表示されます。
- Google Cloud コンソールのダッシュボードにある [プロジェクト情報] の下。(ナビゲーション メニュー()をクリックした後、[Cloud の概要] > [ダッシュボード] をクリック。)
- ラボのタブのユーザー名とパスワードの付近。
-
Cloud Shell でプロジェクト ID を確認するには、次の
gcloud
コマンドを実行します。gcloud config get-value project -
Cloud Shell で次の
gcloud
コマンドを実行し、プロジェクトの詳細を確認します。gcloud compute project-info describe --project $(gcloud config get-value project) コマンドの出力から、ゾーンとリージョンのメタデータの値を見つけます。後ほど、この出力されたゾーン(
google-compute-default-zone
)を使用します。注: google-compute-default-region
またはgoogle-compute-default-zone
のキーと値が出力に含まれていない場合は、デフォルトのゾーンまたはリージョンが設定されていません。 出力には、プロジェクトに関するその他の有用な情報が含まれています。時間をとって詳しく確認してください。
環境変数を設定する
環境変数とは環境を定義する変数のことです。環境変数を設定することで、API や実行可能ファイルを含むスクリプトを作成する際に時間を節約できます。
-
プロジェクト ID を格納する環境変数を作成します。
export PROJECT_ID=$(gcloud config get-value project) -
ゾーンを格納する環境変数を作成します。
export ZONE=$(gcloud config get-value compute/zone) -
変数が適切に設定されていることを確認するために、次のコマンドを実行します。
echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE" 変数が適切に設定されている場合は、echo コマンドでプロジェクト ID とゾーンが出力されます。
gcloud ツールを使用して仮想マシンを作成する
gcloud
ツールを使用して新しい仮想マシン(VM)インスタンスを作成します。
-
VM を作成するには、次のコマンドを実行します。
gcloud compute instances create gcelab2 --machine-type e2-medium --zone $ZONE 出力:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-04-326fae68bc3d/zones/us-east1-c/instances/gcelab2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gcelab2 {{{project_0.default_zone | ZONE}}} e2-medium 10.128.0.2 34.67.152.90 RUNNING コマンドの詳細
-
gcloud compute
: Compute Engine のリソースを Compute Engine API よりもシンプルに管理できます。 -
instances create
: 新しいインスタンスを作成します。 -
gcelab2
: VM の名前です。 -
--machine-type
フラグ: 「e2-medium」マシンタイプを指定します。 -
--zone
フラグ: VM を作成する場所を指定します。 -
--zone
フラグを省略した場合、gcloud
ツールはデフォルトのプロパティに基づいてユーザーに適したゾーンを推定します。インスタンスに必要なその他の設定(machine type
やimage
など)がcreate
コマンドで指定されていない場合は、デフォルト値に設定されます。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。
gcloud
ツールで仮想マシンを正常に作成できた場合は、評価スコアが表示されます。gcloud による仮想マシンの作成 -
create
コマンドのヘルプを開くには、次のコマンドを実行します。
gcloud compute instances create --help 注: Enter キーまたは Space キーを押すと、ヘルプ情報をスクロールできます。終了するには、「Q」と入力します。 -
gcloud コマンドを確認する
gcloud
コマンドの末尾に -h
フラグ(help(ヘルプ)の「h」)を付けると、使用方法に関する簡単なガイドラインが表示されます。
-
次のコマンドを実行します。
gcloud -h
さらに詳細なヘルプを表示するには、コマンドに --help
フラグを付けるか、gcloud help
コマンドを実行します。
-
次のコマンドを実行します。
gcloud config --help 終了するには、「
Q
」と入力して Enter キーを押します。 -
次のコマンドを実行します。
gcloud help config gcloud config --help
コマンドとgcloud help config
コマンドはどちらも同じ結果を返し、詳細なヘルプ情報が表示されます。gcloud
には、呼び出しごとにコマンドの動作を制御するグローバル フラグがあります。フラグは、SDK のプロパティで設定された値よりも優先されます。 -
使用環境の構成リストを表示してみましょう。
gcloud config list -
すべてのプロパティとその設定を表示してみましょう。
gcloud config list --all -
コンポーネントを一覧表示してみましょう。
gcloud components list このラボで使用可能な
gcloud
コンポーネントが表示されます。
タスク 2: コマンドラインの出力をフィルタリングする
gcloud
コマンドライン インターフェース(CLI)はコマンドラインで操作できる便利なツールですが、
特定の情報に絞り込んで確認したい場合があります。
-
プロジェクトで利用可能なコンピューティング インスタンスを一覧表示します。
gcloud compute instances list 注: 一般的に、プロジェクトには複数のリソースがデプロイされています。 gcloud
には特定のリソースを識別するために役立つ便利なフォーマットがいくつかあります。出力例:
NAME: gcelab2 ZONE: {{{project_0.default_zone | ZONE}}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.142.0.2 EXTERNAL_IP: 35.237.43.111 STATUS: RUNNING -
gcelab2 仮想マシンを一覧表示します。
gcloud compute instances list --filter="name=('gcelab2')" 出力例:
NAME: gcelab2 ZONE: {{{project_0.default_zone | ZONE}}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.142.0.2 EXTERNAL_IP: 35.237.43.111 STATUS: RUNNING
先ほどのコマンドでは、条件に一致する情報(つまり仮想マシンのインスタンス名が条件に一致するもの)のみを表示するように gcloud
を指定しました。
-
プロジェクト内のファイアウォール ルールを一覧表示します。
gcloud compute firewall-rules list 出力:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False -
デフォルト ネットワークのファイアウォール ルールを一覧表示します。
gcloud compute firewall-rules list --filter="network='default'" 出力:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False -
デフォルト ネットワークのファイアウォール ルールのうち、ICMP の許可ルールと一致するものを一覧表示します。
gcloud compute firewall-rules list --filter="NETWORK:'default' AND ALLOW:'icmp'" 出力:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False
タスク 3: VM インスタンスに接続する
gcloud compute
を使用すると、インスタンスに簡単に接続できます。
gcloud compute ssh
コマンドは SSH のラッパーとして、インスタンス名から IP アドレスへのマッピングと認証を行います。
-
SSH を使用して VM に接続するには、次のコマンドを実行します。
gcloud compute ssh gcelab2 --zone $ZONE 出力:
WARNING: The public SSH key file for gcloud does not exist. WARNING: The private SSH key file for gcloud does not exist. WARNING: You do not have an SSH key for gcloud. WARNING: [/usr/bin/ssh-keygen] will be executed to generate a key. This tool needs to create the directory [/home/gcpstaging306_student/.ssh] before being able to generate SSH Keys. Do you want to continue? (Y/n) -
続行するには、「Y」と入力します。
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase) -
パスフレーズを空白のままにするには、Enter キーを 2 回押します。
注: これで、ラボで先ほど作成した仮想マシンに接続しました。 コマンド プロンプトの変化に気づきましたか? プロンプトが sa_107021519685252337470@gcelab2 のように表示されるようになりました。 - @ の前の部分は、使用しているアカウントを示しています。
- @ の後の部分は、アクセスしているホストマシンを示しています。
-
仮想マシンに
nginx
ウェブサーバーをインストールします。sudo apt install -y nginx -
他に何もする必要はありません。SSH 接続を解除してリモートシェルを終了するには、次のコマンドを実行します。
exit プロジェクトのコマンド プロンプトに戻ります。
タスク 4: ファイアウォールを更新する
仮想マシンなどのコンピューティング リソースを使用するときは、関連するファイアウォール ルールを理解しておくことが大切です。
-
プロジェクトのファイアウォール ルールを一覧表示します。
gcloud compute firewall-rules list 出力:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-icmp default INGRESS 65534 icmp False default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False default-allow-rdp default INGRESS 65534 tcp:3389 False default-allow-ssh default INGRESS 65534 tcp:22 False dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False この出力から、利用可能なネットワークが 2 つあることがわかります。 デフォルト(
default
)ネットワークは、仮想マシンgcelab2
が配置されているネットワークです。 -
gcelab2
仮想マシンで走行している nginx サービスにアクセスしてみましょう。注: 仮想マシンにはファイアウォール ルールが適切に設定されていないため、仮想マシンとの通信に失敗します。 nginx ウェブサーバーには tcp:80 で通信する必要があります。 正常に通信するには、次の操作をします。
- gcelab2 仮想マシンにタグを追加する
- HTTP トラフィック用のファイアウォール ルールを追加する
-
仮想マシンにタグを追加します。
gcloud compute instances add-tags gcelab2 --tags http-server,https-server -
通信を許可するようにファイアウォール ルールを更新します。
gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server -
プロジェクトのファイアウォール ルールを一覧表示します。
gcloud compute firewall-rules list --filter=ALLOW:'80' 出力:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED default-allow-http default INGRESS 1000 tcp:80 False -
HTTP で仮想マシンと通信できることを確認します。
curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')
nginx
のデフォルト出力が表示されます。
タスク 5: システムログを確認する
プロジェクトの稼働状況を把握するうえで、ログの確認は不可欠です。gcloud
を使用することで、Google Cloud で利用できるさまざまなログにアクセスできます。
-
システムで利用可能なログを確認してみましょう。
gcloud logging logs list 出力:
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/GCEGuestAgent NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/OSConfigAgent NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/autoscaler.googleapis.com%2Fstatus_change NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Factivity NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fdata_access NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fsystem_event NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstderr NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstdout -
コンピューティング リソースに関連するログを確認してみましょう。
gcloud logging logs list --filter="compute" 出力:
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity -
リソースの種類
gce_instance
に関連するログを確認してみましょう。gcloud logging read "resource.type=gce_instance" --limit 5 -
特定の仮想マシンのログを確認してみましょう。
gcloud logging read "resource.type=gce_instance AND labels.instance_name='gcelab2'" --limit 5
タスク 6. 理解度を確認する
今回のラボで学習した内容の理解を深めていただくために、以下の多肢選択式の問題を用意しました。
お疲れさまでした
このラボでは、Cloud Shell の起動方法について学び、gcloud
のサンプル コマンドを実行してみました。
次のステップと詳細情報
-
Cloud Shell の詳細については、Cloud Shell のドキュメントまたは YouTube 動画「Google Cloud Shell を使用する」をご覧ください。
-
gcloud
の詳細については、gcloud のドキュメントまたは YouTube 動画「Getting Help with gcloud」をご覧ください。
次のラボを受講して学習を続けてください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 9 月 9 日
ラボの最終テスト日: 2024 年 9 月 9 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。