
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create mynetwork and its resources
/ 100
Terraform を使用すると、クラウド インフラストラクチャを安全かつ想定どおりに作成、変更、改善できます。Terraform は、API を宣言的な構成ファイルにコード化するオープンソースのツールです。ファイルは、チームメンバー間で共有したり、コードとして扱ったりできます。また、編集、レビュー、バージョン管理を行うこともできます。
このラボでは、Terraform 構成とモジュールを作成して、Google Cloud インフラストラクチャのデプロイを自動化します。具体的には、以下の図に示すようにファイアウォール ルールと 2 つの VM インスタンスを備えた自動モード ネットワークをデプロイします。
このラボでは、次のタスクの実行方法について学びます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] パネルでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] パネルでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
このタスクでは、Terraform を使用するように Cloud Shell 環境を構成します。
Terraform は Cloud Shell に統合されたので、インストールされているバージョンを確認します。
出力は次のようになります。
注: Terraform のバージョンが最新ではないという警告が表示されても問題ありません。このラボの手順では Terraform v1.5.7 以降を使用します。入手可能な最新バージョンの Terraform は Terraform ウェブサイトからダウンロードできます。Terraform はサポート対象のプラットフォームおよびアーキテクチャ別にバイナリ パッケージとして配布されています。Cloud Shell では Linux 64 ビット用のファイルを使用します。
注: 「サードパーティの Cookie が無効になっているためコードエディタを読み込めませんでした」というメッセージが表示された場合は、[新しいウィンドウで開く] をクリックしてください。新しいタブでコードエディタが開きます。元のタブに戻って [ターミナルを開く] をクリックした後、コードエディタのタブに戻ります。このラボでは、Cloud Shell のターミナルに繰り返し戻る必要があります。
Terraform ではプラグイン ベースのアーキテクチャを使用して、さまざまなインフラストラクチャやサービス プロバイダをサポートしています。それぞれの「プロバイダ」は、Terraform 自体とは別に配布される、独自にカプセル化されたバイナリです。ここでは Google をプロバイダとして設定し、Terraform を初期化します。
[New File] をクリックします。provider.tf
にコピーします。[File] > [Save] をクリックして provider.tf を保存します。
次のコマンドを実行して、Terraform を初期化します。
これで Cloud Shell で Terraform を操作する準備が整いました。
このタスクでは、自動モード ネットワークの mynetwork を、ファイアウォール ルールと 2 つの VM インスタンス(mynet_vm_1 と mynet_vm_2)とともに作成します。
新たに構成を作成し、mynetwork を定義します。
、tfinfra フォルダを右クリックし、[New File] をクリックします。mynetwork.tf
にコピーします。この基本型は、あらゆる Google Cloud リソースの作成に使用できます。name にはリソース名、type には作成する Google Cloud のリソースを指定します。プロパティも定義できますが、リソースによっては省略可能です。
mynetwork.tf
で [RESOURCE_TYPE]
を "google_compute_network"
(引用符付き)に置き換えます。注: この google_compute_network リソースは VPC ネットワークです。利用可能なリソースは、Google Cloud Provider のドキュメントに記載されています。この特定のリソースについて詳しくは、Terraform のドキュメントをご覧ください。
mynetwork.tf
で [RESOURCE_NAME]
を "mynetwork"
(引用符付き)に置き換えます。mynetwork.tf
に次のプロパティを追加します。文字どおり、自動モード ネットワークではサブネットワークが各リージョンに自動的に作成されます。そのため auto_create_subnetworks を true に設定します。
mynetwork.tf
を保存します。mynetwork で HTTP、SSH、RDP、ICMP のトラフィックを許可するファイアウォール ルールを定義します。
mynetwork.tf
に次の基本コードを追加します。mynetwork.tf
で [RESOURCE_TYPE]
を "google_compute_firewall"
(引用符付き)に置き換えます。注: この google_compute_firewall リソースはファイアウォール ルールです。この特定のリソースについて詳しくは、Terraform のドキュメントをご覧ください。
mynetwork.tf
で [RESOURCE_NAME]
を "mynetwork-allow-http-ssh-rdp-icmp"
(引用符付き)に置き換えます。mynetwork.tf
に次のプロパティを追加します。注: ファイアウォール ルールはネットワークに依存するため、google_compute_network.mynetwork.self_link 参照を使用すると、Terraform ではこれらのリソースが依存順序に沿って解決されます。この場合、ネットワークはファイアウォール ルールより先に作成されます。
mynetwork.tf
に次のプロパティを追加します。この allow ルールのリストでは、許可されるプロトコルとポートを指定します。
mynetwork.tf
ファイルの内容が次のようになっていることを確認します。VM インスタンス モジュールを作成して、VM インスタンスを定義します。モジュールとは、フォルダ内に作成された再利用可能な構成のことです。このモジュールは、このラボの両方の VM インスタンスで使用します。
instance フォルダを右クリックし、[New File] をクリックします。Cloud Shell には以下のようなフォルダ構造が表示されます。
main.tf
で [RESOURCE_TYPE]
を "google_compute_instance"
(引用符付き)に置き換えます。注: この google_compute_instance リソースは Compute Engine インスタンスです。この特定のリソースについて詳しくは、Terraform のドキュメントをご覧ください。
main.tf
で [RESOURCE_NAME]
を "${var.instance_name}"
(引用符付き)に置き換えます。このモジュールは両方の VM インスタンスに使用するため、入力変数としてインスタンス名を定義します。これにより、mynetwork.tf の変数の名前を制御できます。入力変数について詳しくは、Terraform の入力変数の定義に関するガイドをご覧ください。
main.tf
に次のプロパティを追加します。これらのプロパティでは、インスタンスのゾーンとマシンタイプを入力変数として定義しています。
main.tf
に次のプロパティを追加します。このプロパティでは、Debian 11 OS イメージを使用するようにブートディスクを定義しています。両方の VM インスタンスで同じイメージを使用するため、モジュール内にこのプロパティをハードコードしてもかまいません。
main.tf
に次のプロパティを追加します。このプロパティは入力変数としてネットワーク名を指定し、アクセス構成を指定して、ネットワーク インターフェースを定義します。アクセス設定を空のままにしておくと、エフェメラル外部 IP アドレス(このラボで必要)になります。内部 IP アドレスのみを割り当てたインスタンスを作成するには、access_config セクションを削除してください。詳細については、Terraform のドキュメントをご覧ください。
main.tf
の内容が次のようになっていることを確認します(括弧 {}
の欠落に注意)。
instance フォルダを右クリックし、[New File] をクリックします。variables.tf
内に定義します。instance_type にデフォルト値を設定することで、この変数の指定をオプションとします。instance_name、instance_zone、instance_network は必須です。これらは mynetwork.tf
で定義します。
mynetwork.tf
に次の VM インスタンスを追加します。これらのリソースは instance フォルダ内のモジュールを利用し、名前、ゾーン、ネットワークを入力値として指定しています。これらのインスタンスは VPC ネットワークに依存するため、google_compute_network.mynetwork.self_link 参照を使用すると、Terraform ではこれらのリソースが依存順序に沿って解決されます。この場合は、インスタンスの前にネットワークが作成されます。
注: Terraform モジュールを作成するメリットは、さまざまな構成でモジュールを再利用できることです。独自のモジュールを作成する代わりに Terraform モジュール レジストリの既存のモジュールを活用することもできます。
[File] > [Save] をクリックして mynetwork.tf
を保存します。
mynetwork.tf
の内容が次のようになっていることを確認します(括弧 {}
の欠落に注意)。
ここで、mynetwork の構成を適用します。
出力は次のようになります。
注: エラーが表示された場合は、前のステップに戻って構成がラボの説明と一致しているかどうかを確認してください。構成の問題をトラブルシューティングできない場合は、完成された構成をダウンロードして内容を確認してください。
出力は次のようになります。
注: エラーが表示された場合は、前のステップに戻ってフォルダとファイルの構造が正しいかどうかを確認してください。構成の問題をトラブルシューティングできない場合は、前述したリンクの完成された構成を参考にしてください。問題を修正したら、前のコマンドを再実行してください。
出力は次のようになります。
Terraform により以下の 4 つのリソースを追加する必要があると判断されました。
名前 | 説明 |
---|---|
mynetwork | VPC ネットワーク |
mynetwork-allow-http-ssh-rdp-icmp | HTTP、SSH、RDP、ICMP を許可するファイアウォール ルール |
mynet-vm-2 |
|
mynet-vm-2 |
|
出力は次のようになります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
注: 実行中にエラーが表示された場合は、前のステップに戻ってフォルダとファイルの構造が正しいかどうかを確認してください。構成の問題をトラブルシューティングできない場合は、前述したリンクの完成された構成を参考にしてください。問題を修正したら、前のコマンドを再実行してください。
Google Cloud コンソールで、リソースが作成されたことを確認します。
このラボでは、Terraform 構成とモジュールを作成して、Google Cloud インフラストラクチャのデプロイを自動化しました。Terraform では構成の変更に応じてインクリメンタルな実行プランの作成が可能であり、構成全体を段階的に構築できます。
インスタンス モジュールを使用すると、複数のリソースに対して同じリソース構成を再利用しながら、プロパティを入力変数として扱うことができます。作成した構成とモジュールは、今後デプロイを実行するときに活用できます。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください