arrow_back

Spanner インスタンスとデータベースの作成(CLI と Terraform)

ログイン 参加
700 以上のラボとコースにアクセス

Spanner インスタンスとデータベースの作成(CLI と Terraform)

ラボ 1時間 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

SCBL002

概要

このラボでは、Google Cloud SDK、コマンドライン インターフェース(CLI)、Terraform を使用して、Spanner インスタンスとデータベースの作成を自動化します。

目標

このラボでは、次の方法について学びます。

  • gcloud CLI を使用してインスタンスとデータベースを作成する。
  • Terraform を使用して Spanner インフラストラクチャを自動化する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ご自身でラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントに追加料金が発生する可能性があります。

Google Cloud Shell の有効化

Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。

GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

Cloud Shell アイコン

[続行] をクリックします。

cloudshell_continue

環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:

Cloud Shell 端末

gcloud は Google Cloud Platform のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

次のコマンドを使用すると、有効なアカウント名を一覧表示できます。

gcloud auth list

出力:

ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
	

次のコマンドを使用すると、プロジェクト ID を一覧表示できます。

gcloud config list project
	

出力:

[core]
project = <project_ID>
	

出力例:

[core]
project = qwiklabs-gcp-44776a13dea667a6
	

タスク 1. gcloud CLI を使用してインスタンスとデータベースを作成する

  1. Google Cloud コンソールのタイトルバーで、[Cloud Shell をアクティブにする](Cloud Shell アイコン)をクリックします。プロンプトが表示されたら、[続行] をクリックします。

  2. 次のコマンドを実行して、プロジェクト ID を設定します。

gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
  1. Cloud Shell プロンプトで次のコマンドを実行して、test-spanner-instance という名前の Spanner インスタンスを作成します。

Spanner の構成と容量のパラメータに注意してください。コマンドを承認するよう求められたら、承認します。

gcloud spanner instances create test-spanner-instance --config=regional-{{{project_0.default_region|place_holder_text}}} --description="test-spanner-instance" --processing-units=100
  1. コマンドはすぐに完了します。コンソールで Spanner サービスに移動し、インスタンスが作成されたことを確認します。

インスタンスを確認するために、以下のコマンドも実行できます。試してみましょう。

gcloud spanner instances list
  1. Pets データベースを作成する前に、DDL コードを含むファイルが必要です。次のコマンドを入力してファイルを作成し、nano コードエディタで開きます。
nano pets-db-schema.sql
  1. Nano に次のコードを貼り付けます。Ctrl+X キー、Y キー、Enter キーの順に押してファイルを保存します。
CREATE TABLE Owners ( OwnerID STRING(36) NOT NULL, OwnerName STRING(MAX) NOT NULL ) PRIMARY KEY (OwnerID); CREATE TABLE Pets ( PetID STRING(36) NOT NULL, OwnerID STRING(36) NOT NULL, PetType STRING(MAX) NOT NULL, PetName STRING(MAX) NOT NULL, Breed STRING(MAX) NOT NULL, ) PRIMARY KEY (PetID);
  1. スキーマ ファイルが作成されたら、次のコマンドを実行してデータベースを作成します。
gcloud spanner databases create pets-db --instance=test-spanner-instance --database-dialect=GOOGLE_STANDARD_SQL --ddl-file=./pets-db-schema.sql
  1. 飼い主と飼っている犬をすべて挿入します。Owners と Pets の主キーには UUID が使用されています。次のコマンドを入力して、飼い主の UUID を作成し、変数に保存します。
owner_uuid=$(cat /proc/sys/kernel/random/uuid) echo $owner_uuid
  1. 飼い主の名前として Doug を挿入します。
    注: --data パラメータを使用すると、フィールドを名前と値のペアで渡すことができます。
gcloud spanner rows insert --table=Owners --database=pets-db --instance=test-spanner-instance --data=OwnerID=$owner_uuid,OwnerName=Doug
  1. 次のコマンドで Doug の犬をすべて挿入します。
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Rusty',PetType='Dog',Breed='Poodle' gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Duchess',PetType='Dog',Breed='Terrier' gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gretyl',PetType='Dog',Breed='Shepherd' gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gigi',PetType='Dog',Breed='Retriever' gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Noir',PetType='Dog',Breed='Schnoodle' gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Bree',PetType='Dog',Breed='Mutt'
  1. 正常に機能するか確認してみましょう。次のクエリを実行します。
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT o.OwnerName, p.PetName, p.PetType, p.Breed FROM Owners as o JOIN Pets AS p ON o.OwnerID = p.OwnerID'
  1. コンソールに移動してデータを表示することもできます。プロダクト リストから [Spanner] を選択します。左側のメニューで、[test-spanner-instance] > [pets-db]([データベース] の下)> [Pets]([テーブル] の下)> [データ] を選択します。

  2. 次のコマンドでデータベースを削除します。

gcloud spanner databases delete pets-db --instance=test-spanner-instance
  1. コンソールで、データベースが削除されたことを確認します。

  2. 最後に、次のコマンドでインスタンスを削除します。

gcloud spanner instances delete test-spanner-instance --quiet

注: --quiet パラメータは、ユーザーにプロンプトを表示せずにコマンドを実行します。このパラメータは、前のコマンドにも追加できます。これは、自動化パイプラインを作成していて、ユーザーに質問することがない場合に便利です。

  1. コンソールで、インスタンスが削除されたことを確認します。

タスク 2. Terraform を使用して Spanner インフラストラクチャを自動化する

  1. 次のコマンドを使用して、Terraform ファイル用のフォルダを作成し、そのフォルダに移動します。
mkdir terraform-spanner cd terraform-spanner
  1. Terraform モジュールには、いくつかのファイルが必要です。次のコマンドを実行して、空のファイルを作成します。
touch main.tf provider.tf terraform.tfvars variables.tf
  1. [エディタを開く] ボタンをクリックしてコードエディタを開きます。左側の [エクスプローラ] ペインで、先ほど作成した terraform-spanner フォルダを見つけて展開します。provider.tf ファイルを選択してエディタで開き、次のコードを追加します。
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 4.0" } } } provider "google" { project = var.project_id region = var.region }

注: terraform ブロックのコードは、Google プロバイダを Hashicorp のウェブサイトからダウンロードします。provider ブロックのコードは、後で変数として設定する正しいプロジェクト ID とリージョンを使用するようにプロバイダを構成します。

  1. main.tf ファイルを開き、次のリソース ブロックを追加します。このコードは Spanner インスタンスを作成します。
resource "google_spanner_instance" "db-instance" { name = "terraform-spanner-instance" config = "regional-${var.region}" display_name = "TF Spanner Instance" processing_units = var.processing_units force_destroy = var.force_destroy }
  1. 同じファイルで、前のコードの下に、Pets データベースを作成する次のコードを追加します。テーブルを定義する DDL コードに注目してください。
resource "google_spanner_database" "test-database" { instance = google_spanner_instance.db-instance.name name = "pets-db" # Can't run destroy unless set to false deletion_protection = var.deletion_protection ddl = [ "CREATE TABLE Owners (OwnerID STRING(36) NOT NULL, OwnerName STRING(MAX) NOT NULL) PRIMARY KEY (OwnerID)", "CREATE TABLE Pets (PetID STRING(36) NOT NULL, OwnerID STRING(36) NOT NULL, PetType STRING(MAX) NOT NULL, PetName STRING(MAX) NOT NULL, Breed STRING(MAX) NOT NULL) PRIMARY KEY (PetID)", ] }
  1. variables.tf ファイルを開きます。このファイルでは、Terraform モジュールで使用される変数を宣言します。以下のコードを追加します。
variable "deletion_protection" { description = "true に設定すると、データベースが作成されている場合、terraform destroy を実行できなくなります。" type = bool default = false } variable "force_destroy" { description = "true に設定した場合、terraform destroy を実行するとすべてのバックアップが削除されます。" type = bool default = true } variable "processing_units" { type = number default = 100 } variable "project_id" { description = "GCP プロジェクト ID。" type = string } variable "region" { type = string }
  1. project_idregion を除くすべての変数にはデフォルト値があります。それらの変数の値は terraform.tfvars ファイルを使用して設定します。このファイルを開き、次のコードを追加します。
project_id = "{{{project_0.project_id|placeholder_project_id}}}" region = "{{{project_0.default_region|place_holder_text}}}"
  1. 正常に機能するか確認してみましょう。[ターミナルを開く] ボタンをクリックします。エディタで新しいタブまたはウィンドウを開いた場合は、最初に元のタブに戻る必要がある場合があります。コマンド プロンプトで、次のコマンドを入力します。
terraform init
  1. 前のコマンドでエラーがなかったと仮定して、次のコマンドを入力し、出力を分析します。2 つのリソースが追加される旨が表示されます。
terraform plan
  1. 最後に、次のコマンドを入力して、Spanner インスタンスと Pets データベースを作成します。メッセージが表示されたら、「yes」と入力する必要があります。
terraform apply
  1. Terraform コマンドが完了するまで待ちます。コンソールで Spanner サービスに移動し、インスタンスとデータベースが作成されていることを確認します。更新ボタンはないため、別のプロダクトをクリックしてから Spanner に戻ってインスタンス リストを更新する必要があります。

  2. ターミナルに戻り、次のコマンドを入力して Spanner インスタンスを削除します。

terraform destroy -auto-approve

これで完了です。Google Cloud SDK、コマンドライン インターフェース(CLI)、Terraform を使用して、Spanner インスタンスとデータベースの作成を自動化しました。

ラボを終了する

ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバック、ご提案、修正事項がございましたら、[サポート] タブからお知らせください。

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。