arrow_back

Terraform の基礎

ログイン 参加
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

Terraform の基礎

ラボ 35分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

GSP156

Google Cloud セルフペース ラボ

概要

Terraform を使用すると、クラウド インフラストラクチャを安全かつ予想どおりに作成、変更、改善できます。Terraform は、API を宣言的な構成ファイルにコード化するオープンソースのツールです。ファイルは、同僚間で共有したり、コードとして扱ったりできます。また、編集、レビュー、バージョン管理を行うこともできます。

目標

このラボでは、次のタスクを行う方法を学びます。

  • Google Cloud で Terraform の使用を始める。
  • Terraform をインストール バイナリからインストールする。
  • Terraform を使用して VM インスタンスのインフラストラクチャを作成する。

設定と要件

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

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

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

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

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

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。

    ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] パネルでも [ユーザー名] を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] パネルでも [パスワード] を確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

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

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

Terraform とは

Terraform とは、インフラストラクチャを安全かつ効率的に構築、変更、バージョン管理するためのツールです。既存の一般的なサービス プロバイダと自社のカスタム ソリューションを管理できます。

構成ファイルには、Terraform が 1 つのアプリケーションまたはデータセンター全体を実行するために必要なコンポーネントが記述されています。Terraform は、インフラストラクチャを希望の状態にするまでの操作を記載した実行プランを生成し、そのプランを実行して、構成ファイルに記述されたインフラストラクチャを構築します。構成に変更があった場合は変更内容を特定し、増分実行プランを作成して適用することができます。

Terraform で管理できるインフラストラクチャには、コンピューティング インスタンス、ストレージ、ネットワークなどの低レベルのコンポーネントと、DNS エントリ、SaaS 機能などの高レベルのコンポーネントの両方が含まれます。

主な機能

Infrastructure as code

インフラストラクチャの記述には高レベルの構成構文を使用します。これにより、データセンターのブループリントをバージョン管理したり、他のコードと同じように扱ったりできます。インフラストラクチャを共有したり再利用したりすることも可能です。

実行計画

Terraform は、計画手順に沿って実行プランを作成します。実行プランは、apply コマンドの実行時に Terraform が行う動作を示します。インフラストラクチャ構築時に、予想外の操作が実行されるのを回避できます。

リソースグラフ

Terraform では、すべてのリソースのグラフが作成され、依存しないリソースの作成と変更が同時に実行されます。こうしてインフラストラクチャは効率的に構築され、インフラストラクチャ内の依存関係も把握できます。

変更の自動化

インフラストラクチャには、最小限の手作業で、複雑な変更を適用できます。上述の実行プランとリソースグラフを使うと、何がどのような順番で変更されるかがわかるため、多くの人的ミスを回避できます。

タスク 1. Terraform のインストールの確認

Terraform は、Cloud Shell にプリインストールされています。

  • 新しい Cloud Shell タブを開いて、Terraform が利用できることを確認します。
terraform

結果のヘルプ出力は次のようになります。

Usage: terraform [--version] [--help] [args] The available commands for execution are listed below. The most common, useful commands are shown first, followed by less common or more advanced commands. If you're just getting started with Terraform, stick with the common commands. For the other commands, please read the help and docs before usage. Common commands: apply Builds or changes infrastructure console Interactive console for Terraform interpolations destroy Destroy Terraform-managed infrastructure env Workspace management fmt Rewrites config files to canonical format get Download and install modules for the configuration graph Create a visual graph of Terraform resources import Import existing infrastructure into Terraform init Initialize a Terraform working directory output Read an output from a state file plan Generate and show an execution plan providers Prints a tree of the providers used in the configuration push Upload this Terraform module to Atlas to run refresh Update local state file against real resources show Inspect Terraform state or plan taint Manually mark a resource for recreation untaint Manually unmark a resource as tainted validate Validates the Terraform files version Prints the Terraform version workspace Workspace management All other commands: debug Debug output management (experimental) force-unlock Manually unlock the terraform state state Advanced state management

タスク 2. インフラストラクチャを構築する

Terraform がインストールされたら、インフラストラクチャの作成をすぐに開始できます。

構成

インフラストラクチャを説明するために Terraform で使用される一連のファイルは、Terraform 構成と呼ばれています。このセクションでは、1 つの VM インスタンスを起動する最初の構成を記述します。構成ファイルの形式については Terraform 言語のドキュメントをご覧ください。構成ファイルの作成には JSON を使用することをおすすめします。

  1. Cloud Shell で、次のコマンドを使って instance.tf という名前の空の構成ファイルを作成します。
touch instance.tf
  1. Cloud Shell ツールバーの [エディタを開く] をクリックします。
    Cloud Shell とコードエディタを切り替えるには、必要に応じて [エディタを開く] または [ターミナルを開く] をクリックするか、[新しいウィンドウで開く] をクリックして別のタブでエディタを開いたままにします。

  2. instance.tf ファイルをクリックし、ファイルに次の内容を追加して、<PROJECT_ID> を Google Cloud プロジェクト ID に置き換えます。

resource "google_compute_instance" "terraform" { project = "{{{project_0.project_id}}}" name = "terraform" machine_type = "e2-medium" zone = "{{{project_0.default_zone}}}" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } }

これは完全な構成なので、このまま Terraform で適用できます。全体的な構造は直感的で単純です。

instance.tf ファイルの「resource」ブロックは、インフラストラクチャ内に存在するリソースを定義します。リソースは、VM インスタンスなどの物理コンポーネントの場合もあります。

resource ブロックの前に、リソースタイプリソース名の 2 つの文字列があります。このラボでは、リソースタイプは google_compute_instance で、リソース名は terraform です。タイプの接頭辞はプロバイダに対応しているため、google_compute_instance と入力すると、Google プロバイダが管理するリソースであることを Terraform が自動的に認識します。

resource ブロック自体は、リソースの記載に必要な構成になっています。

  1. Cloud Shell で、新しいファイルが追加されたことと、ディレクトリにほかの *.tf ファイルが含まれていないことを確認します。Terraform はすべての *.tf ファイルを読み込むからです。
ls

初期化

新しい構成に対して(または既存の構成をバージョン管理からチェックアウトした後に)最初に実行するコマンドは、terraform init です。このコマンドを実行すると、それ以降のコマンドで使用されるさまざまなローカル設定やローカルデータが初期化されます。

Terraform ではプラグイン ベースのアーキテクチャを使用して、さまざまなインフラストラクチャやサービス プロバイダをサポートしています。それぞれの「プロバイダ」は、Terraform 自体とは別に配布される、独自にカプセル化されたバイナリです。terraform init コマンドを実行すると、プロバイダ(この場合は Google プロバイダのみ)のすべてのプロバイダ バイナリが自動的にダウンロード、インストールされ、構成で使用できるようになります。

  1. プロバイダ バイナリをダウンロードしてインストールします。
terraform init

Google プロバイダのプラグインが、他のさまざまな簿記関連のファイルとともにダウンロードされて、現在の作業ディレクトリのサブディレクトリにインストールされます。「Initializing provider plugins」というメッセージが表示されます。Google プロジェクトから実行していることが認識されて、Google リソースが取得されます。

Installing hashicorp/google v4.77.0... 注: バージョン番号はこれより大きい場合があります。

インストールされるプラグインのバージョンが出力に示されます。また、次回も同じバージョンの構成ファイルを指定すると、terraform init に互換性のあるバージョンがインストールされることが示されます。

  1. 実行プランを作成します。
terraform plan

このコマンドを実行すると、明示的に無効にしない限り、実行プランが更新されます。その後、構成ファイルで指定した、インフラストラクチャを希望の状態にするのに必要な操作が確定します。このコマンドは、一連の変更を加えた実行プランで予想どおりの状態を実現できるかを、実際のリソースや状態に変更を加えずに確認するのに便利です。たとえば、変更をバージョン管理に保存する前にこのコマンドを実行して、意図したとおりに動作することを確認できます。

注: オプションの -out 引数を使用すると、生成されたプランをファイルに保存できます。保存したファイルは、後で terraform apply で実行できます。

変更を適用

  1. 作成した instance.tf ファイルと同じディレクトリで、次のコマンドを実行します。
terraform apply

出力に実行プランが表示されます。実行プランには、実際のインフラストラクチャをこの構成に合わせて変更するために実行される操作が記述されています。出力の形式は、Git などのツールで生成される差分形式に似ています。

google_compute_instance.terraform の横に + があります。これは、Terraform でこのリソースが作成されることを意味しています。それに続いて、設定される属性が表示されています。値が <computed> になっている場合、その属性の値はリソースが作成されるまでわかりません。

出力例:

An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_instance.default will be created + resource "google_compute_instance" "default" { + can_ip_forward = false + cpu_platform = (known after apply) + deletion_protection = false + guest_accelerator = (known after apply) + id = (known after apply) + instance_id = (known after apply) + label_fingerprint = (known after apply) + machine_type = "e2-medium" + metadata_fingerprint = (known after apply) + name = "terraform" + project = "qwiklabs-gcp-42390cc9da8a4c4b" + self_link = (known after apply) + tags_fingerprint = (known after apply) + zone = "us-west1-c" + boot_disk { + auto_delete = true + device_name = (known after apply) + disk_encryption_key_sha256 = (known after apply) + kms_key_self_link = (known after apply) + source = (known after apply) + initialize_params { + image = "debian-cloud/debian-11" + labels = (known after apply) + size = (known after apply) + type = (known after apply) } } + network_interface { + address = (known after apply) + name = (known after apply) + network = "default" + network_ip = (known after apply) + subnetwork = (known after apply) + subnetwork_project = (known after apply) + access_config { + assigned_nat_ip = (known after apply) + nat_ip = (known after apply) + network_tier = (known after apply) } } + scheduling { + automatic_restart = (known after apply) + on_host_maintenance = (known after apply) + preemptible = (known after apply) + node_affinities { + key = (known after apply) + operator = (known after apply) + values = (known after apply) } } } Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:

プランが正常に作成された場合、Terraform はここで一時停止して、続行する前に承認を求めます。本番環境では、実行プランに正しくない内容や危険な内容が含まれていると思われる場合は、安全のためにここで中止してください。この時点で、インフラストラクチャはまだ変更されていません。

  1. この例ではプランに問題がないようなので、確認プロンプトで「yes」と入力して続行します。
    プランの実行には数分かかります。VM インスタンスが利用可能になるまで Terraform が待機するためです。

以上で Terraform の作業は終了です。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

Terraform を使用して ゾーンに VM インスタンスを作成する
  1. Google Cloud コンソールのナビゲーション メニューで、[Compute Engine] > [VM インスタンス] をクリックします。[VM インスタンス] ページが開き、作成した VM が [VM インスタンス] リストに表示されます。

Terraform は、terraform.tfstate ファイルにデータを書き込みます。この状態ファイルは非常に重要です。作成されたリソースの ID がトラッキングされるため、Terraform で管理しているリソースを把握できるからです。

  1. Cloud Shell で現在の状態を確認します。
terraform show

出力例:

# google_compute_instance.default: resource "google_compute_instance" "default" { can_ip_forward = false cpu_platform = "Intel Haswell" deletion_protection = false guest_accelerator = [] id = "terraform" instance_id = "3408292216444307052" label_fingerprint = "42WmSpB8rSM=" machine_type = "e2-medium" metadata_fingerprint = "s6I5s2tjfKw=" name = "terraform" project = "qwiklabs-gcp-42390cc9da8a4c4b" self_link = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/instances/terraform" tags_fingerprint = "42WmSpB8rSM=" zone = "{{{project_0.default_zone}}}" boot_disk { auto_delete = true device_name = "persistent-disk-0" source = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/disks/terraform" ....

このリソースを作成すると、多くの関連情報が収集されたことがわかります。これらの値を参照すると、追加のリソースや出力を構成できます。

これで完了です。ここでは、Terraform を使用して最初のインフラストラクチャを構築しました。さらに、構成構文、基本的な実行プランの例、状態ファイルを確認しました。

タスク 3. 理解度チェック

今回のラボで学習した内容の理解を深めていただくために、以下の多肢選択式の問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

これでこのラボは完了です。ここでは、Terraform を使用して Google Cloud でインフラストラクチャを作成および管理する方法を学びました。

クエストを完了する

このセルフペース ラボは、「Managing Cloud Infrastructure with Terraform」クエストと「Automating Infrastructure on Google Cloud with Terraform」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

Terraform を使用した Infrastructure as Code」に進んでクエストを続けてください。また、以下の Google Cloud Skills Boost のラボも併せてご確認ください。

次のステップと詳細情報

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

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

マニュアルの最終更新日: 2024 年 1 月 26 日

ラボの最終テスト日: 2023 年 8 月 10 日

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

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

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

ありがとうございます。

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