チェックポイント
Create a VM instance in dynamic zone with Terraform
/ 100
Terraform の基礎
GSP156
概要
Terraform を使用すると、クラウド インフラストラクチャを安全かつ予想どおりに作成、変更、改善できます。Terraform は、API を宣言的な構成ファイルにコード化するオープンソースのツールです。ファイルは、同僚間で共有したり、コードとして扱ったりできます。また、編集、レビュー、バージョン管理を行うこともできます。
目標
このラボでは、次のタスクを行う方法を学びます。
- Google Cloud で Terraform の使用を始める。
- Terraform をインストール バイナリからインストールする。
- Terraform を使用して VM インスタンスのインフラストラクチャを作成する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、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 の概要ガイドをご覧ください。
Terraform とは
Terraform とは、インフラストラクチャを安全かつ効率的に構築、変更、バージョン管理するためのツールです。既存の一般的なサービス プロバイダと自社のカスタム ソリューションを管理できます。
構成ファイルには、Terraform が 1 つのアプリケーションまたはデータセンター全体を実行するために必要なコンポーネントが記述されています。Terraform は、インフラストラクチャを希望の状態にするまでの操作を記載した実行プランを生成し、そのプランを実行して、構成ファイルに記述されたインフラストラクチャを構築します。構成に変更があった場合は変更内容を特定し、増分実行プランを作成して適用することができます。
Terraform で管理できるインフラストラクチャには、コンピューティング インスタンス、ストレージ、ネットワークなどの低レベルのコンポーネントと、DNS エントリ、SaaS 機能などの高レベルのコンポーネントの両方が含まれます。
主な機能
Infrastructure as code
インフラストラクチャの記述には高レベルの構成構文を使用します。これにより、データセンターのブループリントをバージョン管理したり、他のコードと同じように扱ったりできます。インフラストラクチャを共有したり再利用したりすることも可能です。
実行計画
Terraform は、計画手順に沿って実行プランを作成します。実行プランは、apply
コマンドの実行時に Terraform が行う動作を示します。インフラストラクチャ構築時に、予想外の操作が実行されるのを回避できます。
リソースグラフ
Terraform では、すべてのリソースのグラフが作成され、依存しないリソースの作成と変更が同時に実行されます。こうしてインフラストラクチャは効率的に構築され、インフラストラクチャ内の依存関係も把握できます。
変更の自動化
インフラストラクチャには、最小限の手作業で、複雑な変更を適用できます。上述の実行プランとリソースグラフを使うと、何がどのような順番で変更されるかがわかるため、多くの人的ミスを回避できます。
タスク 1. Terraform のインストールの確認
Terraform は、Cloud Shell にプリインストールされています。
- 新しい Cloud Shell タブを開いて、Terraform が利用できることを確認します。
結果のヘルプ出力は次のようになります。
タスク 2. インフラストラクチャを構築する
Terraform がインストールされたら、インフラストラクチャの作成をすぐに開始できます。
構成
インフラストラクチャを説明するために Terraform で使用される一連のファイルは、Terraform 構成
と呼ばれています。このセクションでは、1 つの VM インスタンスを起動する最初の構成を記述します。構成ファイルの形式については Terraform 言語のドキュメントをご覧ください。構成ファイルの作成には JSON を使用することをおすすめします。
- Cloud Shell で、次のコマンドを使って
instance.tf
という名前の空の構成ファイルを作成します。
-
Cloud Shell ツールバーの [エディタを開く] をクリックします。
Cloud Shell とコードエディタを切り替えるには、必要に応じて [エディタを開く] または [ターミナルを開く] をクリックするか、[新しいウィンドウで開く] をクリックして別のタブでエディタを開いたままにします。 -
instance.tf
ファイルをクリックし、ファイルに次の内容を追加して、<PROJECT_ID>
を Google Cloud プロジェクト ID に置き換えます。
これは完全な構成なので、このまま Terraform で適用できます。全体的な構造は直感的で単純です。
instance.tf
ファイルの「resource」ブロックは、インフラストラクチャ内に存在するリソースを定義します。リソースは、VM インスタンスなどの物理コンポーネントの場合もあります。
resource ブロックの前に、リソースタイプとリソース名の 2 つの文字列があります。このラボでは、リソースタイプは google_compute_instance
で、リソース名は terraform
です。タイプの接頭辞はプロバイダに対応しているため、google_compute_instance
と入力すると、Google
プロバイダが管理するリソースであることを Terraform が自動的に認識します。
resource ブロック自体は、リソースの記載に必要な構成になっています。
- Cloud Shell で、新しいファイルが追加されたことと、ディレクトリにほかの
*.tf
ファイルが含まれていないことを確認します。Terraform はすべての *.tf ファイルを読み込むからです。
初期化
新しい構成に対して(または既存の構成をバージョン管理からチェックアウトした後に)最初に実行するコマンドは、terraform init
です。このコマンドを実行すると、それ以降のコマンドで使用されるさまざまなローカル設定やローカルデータが初期化されます。
Terraform ではプラグイン ベースのアーキテクチャを使用して、さまざまなインフラストラクチャやサービス プロバイダをサポートしています。それぞれの「プロバイダ」は、Terraform 自体とは別に配布される、独自にカプセル化されたバイナリです。terraform init
コマンドを実行すると、プロバイダ(この場合は Google プロバイダのみ)のすべてのプロバイダ バイナリが自動的にダウンロード、インストールされ、構成で使用できるようになります。
- プロバイダ バイナリをダウンロードしてインストールします。
Google プロバイダのプラグインが、他のさまざまな簿記関連のファイルとともにダウンロードされて、現在の作業ディレクトリのサブディレクトリにインストールされます。「Initializing provider plugins」というメッセージが表示されます。Google プロジェクトから実行していることが認識されて、Google リソースが取得されます。
インストールされるプラグインのバージョンが出力に示されます。また、次回も同じバージョンの構成ファイルを指定すると、terraform init
に互換性のあるバージョンがインストールされることが示されます。
- 実行プランを作成します。
このコマンドを実行すると、明示的に無効にしない限り、実行プランが更新されます。その後、構成ファイルで指定した、インフラストラクチャを希望の状態にするのに必要な操作が確定します。このコマンドは、一連の変更を加えた実行プランで予想どおりの状態を実現できるかを、実際のリソースや状態に変更を加えずに確認するのに便利です。たとえば、変更をバージョン管理に保存する前にこのコマンドを実行して、意図したとおりに動作することを確認できます。
-out
引数を使用すると、生成されたプランをファイルに保存できます。保存したファイルは、後で terraform apply
で実行できます。
変更を適用
- 作成した
instance.tf
ファイルと同じディレクトリで、次のコマンドを実行します。
出力に実行プランが表示されます。実行プランには、実際のインフラストラクチャをこの構成に合わせて変更するために実行される操作が記述されています。出力の形式は、Git などのツールで生成される差分形式に似ています。
google_compute_instance.terraform
の横に +
があります。これは、Terraform でこのリソースが作成されることを意味しています。それに続いて、設定される属性が表示されています。値が <computed>
になっている場合、その属性の値はリソースが作成されるまでわかりません。
出力例:
プランが正常に作成された場合、Terraform はここで一時停止して、続行する前に承認を求めます。本番環境では、実行プランに正しくない内容や危険な内容が含まれていると思われる場合は、安全のためにここで中止してください。この時点で、インフラストラクチャはまだ変更されていません。
- この例ではプランに問題がないようなので、確認プロンプトで「
yes
」と入力して続行します。
プランの実行には数分かかります。VM インスタンスが利用可能になるまで Terraform が待機するためです。
以上で Terraform の作業は終了です。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。
- Google Cloud コンソールのナビゲーション メニューで、[Compute Engine] > [VM インスタンス] をクリックします。[VM インスタンス] ページが開き、作成した VM が [VM インスタンス] リストに表示されます。
Terraform は、terraform.tfstate
ファイルにデータを書き込みます。この状態ファイルは非常に重要です。作成されたリソースの ID がトラッキングされるため、Terraform で管理しているリソースを把握できるからです。
- Cloud Shell で現在の状態を確認します。
出力例:
このリソースを作成すると、多くの関連情報が収集されたことがわかります。これらの値を参照すると、追加のリソースや出力を構成できます。
これで完了です。ここでは、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 Marketplace の Hashicorp
- Terraform コミュニティ
- Terraform の Google の例
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 の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。