arrow_back

Build Infrastructure with Terraform on Google Cloud: チャレンジラボ

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Build Infrastructure with Terraform on Google Cloud: チャレンジラボ

Lab 1時間 30分 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP345

Google Cloud セルフペース ラボ

概要

チャレンジラボでは、シナリオと一連のタスクが提供されます。各ステップの説明に沿って進める形式ではなく、クエスト内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。

チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。

100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。

このラボは、「Build Infrastructure with Terraform on Google Cloud」コースに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。

テスト対象トピック:

  • 既存のインフラストラクチャを Terraform の構成にインポートする
  • 独自の Terraform モジュールを構築して参照する
  • リモート バックエンドを構成に追加する
  • Terraform Registry にあるモジュールを使用および実装する
  • インフラストラクチャの再プロビジョニング、破棄、更新を行う
  • 作成したリソース間の接続をテストする

設定と要件

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

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

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

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

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

チャレンジ シナリオ

新興スタートアップ企業でクラウド エンジニアのインターンとして働いています。最初のプロジェクトとして新しい上司から課された仕事は、迅速かつ効率的な方法でインフラストラクチャを構築し、後で参照や変更を行えるよう、そのインフラストラクチャの追跡メカニズムを考案することでした。Terraform を使用してこのプロジェクトを完遂させるよう指示されています。

今回のプロジェクトでは、このスタートアップ企業の推奨プロバイダである Google Cloud 上で Terraform を使用して、インフラストラクチャを構築、デプロイ、追跡します。また、適切に管理されていない一部のインスタンスを構成にインポートし、修正する必要があります。

このラボで Terraform を使用してインポートおよび作成するのは、複数の VM インスタンス、2 つのサブネットワークを持つ VPC ネットワーク、2 つのインスタンス間の接続を許可するための VPC ファイアウォール ルールです。リモート バックエンドをホストするための Cloud Storage バケットも作成します。

注: 各セクションの終了時に、作業内容が適切に検証されるよう、変更に対して planapply を実行してください。このラボでは、さまざまな Terraform ファイルを更新します。正しいファイルパスを使用し、適切なインデントを維持するように注意しましょう。

タスク 1. 構成ファイルを作成する

  1. Cloud Shell で、Terraform 構成ファイルと、以下のようなディレクトリ構造を作成します。
main.tf variables.tf modules/ └── instances ├── instances.tf ├── outputs.tf └── variables.tf └── storage ├── storage.tf ├── outputs.tf └── variables.tf
  1. ルート ディレクトリと各モジュールの中にある variables.tf ファイルに情報を入力します。各ファイルに regionzoneproject_id の 3 つの変数を追加します。デフォルト値には、、Google Cloud プロジェクト ID を使用します。
注: リソース構成内の該当する箇所すべてで、これらの変数を使用する必要があります。
  1. この Terraform ブロックと Google プロバイダmain.tf ファイルに追加します。Google プロバイダのブロックに、project 引数および region 引数とともに zone 引数が追加されていることを確認します。

  2. Terraform を初期化します。

タスク 2. インフラストラクチャをインポートする

  1. Google Cloud コンソールのナビゲーション メニューで、[Compute Engine] > [VM インスタンス] をクリックします。tf-instance-1 および tf-instance-2 という 2 つのインスタンスがすでに作成されています。
注: それぞれのインスタンスをクリックすると、そのインスタンス IDブートディスク イメージマシンタイプを確認できます。これらの情報はすべて、構成を正しく記述して Terraform にインポートするために必要です。
  1. 既存のインスタンスを instances モジュールにインポートします。以下の手順に従ってください。
  • まず、このモジュールへの参照を main.tf ファイルに追加して、Terraform をもう一度初期化します。
  • 次に、既存のインスタンスと一致するよう、instances.tf ファイルにリソースの構成を記述します。
    • インスタンスの名前を tf-instance-1 および tf-instance-2 とします。
    • このラボでは、リソースの構成をできる限り小さくする必要があります。このため、構成に含める追加の引数は machine_typeboot_disknetwork_interfacemetadata_startup_scriptallow_stopping_for_update のみにします。最後の 2 つの引数については、以下の構成を使用すれば、自分で再度作成せずに済みます。
    metadata_startup_script = <<-EOT #!/bin/bash EOT allow_stopping_for_update = true
  • モジュール内にリソースの構成を記述したら、terraform import コマンドを使用して構成を instances モジュールにインポートします。
  1. 変更を適用します。今回は構成全体のすべての引数を入力したわけではないので、apply を実行するとインプレースでインスタンスが更新されます。ラボではこれで十分ですが、本番環境では必ず、すべての引数を正しく入力してからインポートを行う必要があります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。インフラストラクチャをインポートする。

タスク 3. リモート バックエンドを構成する

  1. storage モジュール内に Cloud Storage バケット リソースを作成します。バケットの name には、 を使用します。他の引数については、以下の値をそのまま使用できます。

    • location = "US"
    • force_destroy = true
    • uniform_bucket_level_access = true
注: 必要に応じて、outputs.tf ファイル内に出力値を追加することもできます。
  1. このモジュールへの参照を main.tf ファイルに追加します。Terraform を使用して、モジュールの初期化と変更内容の apply を実行し、バケットを作成します。

  2. main.tf ファイル内で、このストレージ バケットを リモート バックエンド として構成します。採点が正常に行われるように、必ず prefix として terraform/state を使用してください。

  3. 構成を正しく記述していれば、init の実行時に、既存のステートデータを新しいバックエンドにコピーするかどうかを尋ねられます。プロンプトで yes と入力します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。リモート バックエンドを構成する。

タスク 4. インフラストラクチャを変更して更新する

  1. instances モジュールに移動して、インスタンス リソース tf-instance-1 がマシンタイプ e2-standard-2 を使用するように変更します。

  2. また、tf-instance-2 もマシンタイプ e2-standard-2 を使用するように変更します。

  3. 3 つ目のインスタンス リソースを追加して、名前を とします。この 3 つ目のリソースもマシンタイプ e2-standard-2 を使用します。3 つのインスタンスのマシンタイプがいずれも e2-standard-2 に変更されていることを確認してください。

  4. Terraform を初期化して、apply を実行して変更を適用します。

注: 必要に応じて、モジュール内の outputs.tf ファイルに、これらのリソースからの出力値を追加できます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。インフラストラクチャを変更して更新する。

タスク 5. リソースを破棄する

  1. 3 つ目のインスタンス を破棄するために、構成ファイルからそのリソースを削除します。削除したら Terraform を初期化し、apply を実行して変更を適用します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。リソースを破棄する。

タスク 6. Registry にあるモジュールを使用する

  1. Terraform Registry でネットワーク モジュールに移動します。

  2. このモジュールを main.tf ファイルに追加します。以下の構成を使用します。

  • バージョン 6.0.0 を使用します(別のバージョンを使用すると互換性に関するエラーが発生する可能性があります)。
  • VPC の名前を とし、ルーティング モードとして global を使用します。
  • リージョンに 2 つのサブネットを指定し、それぞれの名前を subnet-01subnet-02 にします。サブネットの引数として指定する必要があるのは、名前IPリージョンだけです。
  • subnet-01 には IP 10.10.10.0/24 を使用し、subnet-02 には 10.10.20.0/24 を使用します。
  • セカンダリ範囲およびルートをこの VPC に関連付ける必要はないので、これらの構成は省略できます。
  1. モジュール構成を記述したら、Terraform を初期化して apply を実行し、ネットワークを作成します。

  2. 次に、instances.tf ファイルに移動して、tf-instance-1subnet-01 に、tf-instance-2subnet-02 に接続するように構成リソースを更新します。

注: インスタンス構成内で、network 引数を に更新してから、subnetwork 引数を追加して、各インスタンスの正しいサブネットを指定する必要があります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。Registry にあるモジュールを使用する。

タスク 7. ファイアウォールを構成する

  • main.tf ファイルでファイアウォール ルール リソースを作成し、名前を tf-firewall とします。
    • このファイアウォール ルールでは、ネットワーク がすべての IP 範囲(0.0.0.0/0)について TCP ポート 80 を使用した内向き接続を許可するようにします。
    • source_ranges 引数を追加して、正しい IP 範囲(0.0.0.0/0)を指定します。
    • Terraform を初期化して、apply を実行して変更を適用します。
注: 必要な network 引数を取得するには、ステートを調べて、先ほど作成したリソース google_compute_networkID または self_link を見つけます。projects/PROJECT_ID/global/networks/ という形式になっているはずです。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。ファイアウォールを構成する。

接続テスト(省略可)

VPC を介した内部接続を許可するファイアウォール ルールを作成したら、必要に応じてネットワーク接続テストを行えます。

  1. 両方の VM が実行されていることを確認します。

  2. [ネットワーク インテリジェンス] > [接続テスト] に移動します。2 つの VM で接続テストを実行し、両者が互いに到達可能であることを確認します。これで、インスタンス間の接続を確認できました。

注: Network Management API が有効になっていることを確認してください。有効になっていない場合は、[有効にする] をクリックします。

作成した構成設定は以下のようになっているはずです。

構成設定のページ

お疲れさまでした

制限時間内にアーキテクチャのインポート、作成、変更、構成を完了できた方は、Terraform のスキルを十分に備えています。このラボでは、まず 2 つの構成済み VM を Terraform にインポートした後、Cloud Storage バケットを作成してバックエンドを構成しました。その後、インスタンスをもう 1 つ追加して、モジュール内のリソース構成を実際に変更して更新しました。最後に、Terraform Registry にあるモジュールを使用し、2 つのサブネットを持つ VPC を作成してインスタンスを接続し、インスタンス間の接続を許可するファイアウォール ルールを作成しました。

Build Infrastructure with Terraform on Google Cloud

次のスキルバッジを獲得する

このセルフペース ラボは、「Build Infrastructure with Terraform on Google Cloud」スキルバッジ コースの一部です。このコースを完了すると成果が認められて上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。

次のステップ

Terraform のスキルを証明できた方は、HashiCorp Infrastructure Automation Certification に登録されることをおすすめします。Terraform Associate 認定試験は、運用、IT、開発を専門とし、オープンソースの HashiCorp Terraform に関する基本コンセプトとスキルを習得しているクラウド エンジニアを対象としています。試験対策としては、本番環境で Terraform を使用した業務経験があればベストですが、個人用のデモ環境で試験項目を実行することでも十分に対策できるでしょう。スキルをさらに向上させたい方や、インフラストラクチャの自動化に関する自分の能力を確認したい方は、学習ガイド試験の復習ページを確認し、受験準備ができ次第、試験に登録することをおすすめします。ご健闘をお祈りいたします。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 3 月 22 日

ラボの最終テスト日: 2024 年 3 月 22 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。