概要
このラボでは、データベース移行プロジェクト用の安全なネットワーク インフラストラクチャを作成します。パブリック VPC とプライベート VPC の両方を作成し、それぞれの VPC に適切なファイアウォール ルールを設定します。各ネットワークに仮想マシンを追加し、相互の通信をテストします。このすべてを Terraform を使用して行い、移行プロジェクトで使用できる、より現実的なワークフローを示します。
目標
このラボでは、Terraform を使用して次のタスクを実行する方法について学びます。
- ネットワークの作成を自動化する。
- ファイアウォール ルールを作成する。
- 仮想マシンを作成する。
- プライベート ネットワークを作成する。
設定と要件
このタスクでは、ラボの初期化手順を行います。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
シークレット ウィンドウを使用して Google Skills にログインします。
-
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
-
準備ができたら、[ラボを開始] をクリックします。
-
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。
-
[Google コンソールを開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーや料金が発生します。
-
利用規約に同意し、再設定用のリソースページをスキップします。
タスク 1. Terraform を使用してネットワークの作成を自動化する
-
ナビゲーション メニュー(
)で、[ホーム] をクリックします。
-
[プロジェクト情報] セクションで、プロジェクト ID を見つけてコピーし、テキスト ファイルに貼り付けます。書き留めておきます。
![[プロジェクト情報] セクションでハイライト表示されているプロジェクト ID](https://cdn.qwiklabs.com/lvp5vE9Mcrkq1JgUUxV2lai21m%2BHnhf1tPAj7C%2BUr1w%3D)
-
コンソールの右上にある [Cloud Shell をアクティブにする] アイコン(
)をクリックします。Cloud Shell ターミナルがウィンドウの下部のペインに表示されます。
-
terraform-networks という名前のディレクトリを作成し、そのディレクトリに移動します。
mkdir terraform-networks
cd terraform-networks
- このラボに必要な Terraform ファイルを作成します。
touch provider.tf
touch terraform.tfvars
touch test-server-linux.tf
touch variables.tf
touch vpc-network-public.tf
touch vpc-firewall-rules-public.tf
touch public-test-server-linux.tf
touch random-id-generator.tf
-
ls と入力して、ファイルが terraform-networks フォルダに作成されたことを確認します。
-
Cloud Shell で [エディタを開く] をクリックし、terraform-networks フォルダを選択して provider.tf ファイルを開きます。
-
次のコードを入力して、Google Cloud Terraform プロバイダを構成します。
terraform {
required_version = ">= 0.12"
}
provider "google" {
project = var.project_id
region = var.gcp_region_1
zone = var.gcp_zone_1
}
上記のコードの変数に注目してください。次に、これらの変数と他の変数を作成します。
-
variables.tf ファイルを開き、次のコードを入力します。
# GCP プロジェクト ID
variable "project_id" {
type = string
description = "GCP Project ID"
}
# サブネット 1 で使用するリージョン
variable "gcp_region_1" {
type = string
description = "GCP リージョン"
}
# VM で使用するゾーン
variable "gcp_zone_1" {
type = string
description = "GCP Zone"
}
# パブリック ネットワークのサブネットを定義する
variable "subnet_cidr_public" {
type = string
description = "Subnet CIDR for Public Network"
}
前のファイルで変数を定義し、別のファイルで変数を設定しました。
-
terraform.tfvars ファイルを開き、次のコードを追加します。
# GCP 設定
project_id = "{{{project_0.project_id|Project ID}}}"
gcp_region_1 = "{{{ project_0.default_region | "REGION" }}}"
gcp_zone_1 = "{{{ project_0.default_zone | "ZONE" }}}"
# GCP ネットワーク変数
subnet_cidr_public = "10.1.1.0/24"
-
vpc-network-public.tf ファイルを開き、次の内容を追加します。
resource "google_compute_network" "public-vpc" {
name = "public-vpc"
auto_create_subnetworks = "false"
routing_mode = "GLOBAL"
}
resource "google_compute_subnetwork" "public-subnet_1" {
name = "public-subnet-1"
ip_cidr_range = var.subnet_cidr_public
network = google_compute_network.public-vpc.name
region = var.gcp_region_1
}
注: 上記の Terraform コードでは、1 つのサブネットを持つ VPC が作成されます。サブネットでは、ip_cidr_range と region の 2 つの変数に注目してください。また、サブネットの前に作成された VPC を network プロパティがどのように参照しているかにも注目してください。
-
ここまでの手順が正しく行われたことを確認するには、Google Cloud コンソールのナビゲーション メニュー(
)で [VPC ネットワーク] をクリックします。default という名前のネットワークが 1 つあるはずです。
-
Cloud Shell で、[ターミナルを開く] をクリックします。正しいフォルダが選択されていることを確認します。
cd ~/terraform-networks
- Terraform を初期化するには、次のコマンドを入力します。
terraform init
「Terraform has been successfully initialized!」というメッセージが表示されます。
- Terraform プランをビルドするには、次のコマンドを入力します。
terraform plan
エラーがないことを確認し、作成されるリソースを確認します。
このプランでは、ネットワークとサブネットワークの 2 つのリソースが作成されることがわかります。
- リソースを作成するには、次のコマンドを実行します。
terraform apply -auto-approve
-auto-approve パラメータを指定すると、プロンプトが表示されずにスクリプトが実行されます。
- スクリプトが完了するまで待ち、コンソールで VPC ネットワークのツールバーにある [更新] をクリックします。新しいネットワークとサブネットが表示されます。
ネットワークの構成はまだ完了していません。
- 次のコマンドで、作成したものを削除します。
terraform destroy -auto-approve
- [更新] をクリックして、ネットワークが削除されたことを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Terraform を使用してネットワークの作成を自動化する
確認
ここまでで、Terraform を使用してネットワークとサブネットを作成しました。次に、ファイアウォール ルールをいくつか作成します。
タスク 2. Terraform を使用してファイアウォール ルールを作成する
-
Cloud Shell で [エディタを開く] をクリックします。terraform-networks フォルダにある vpc-firewall-rules-public.tf ファイルを開きます。
-
このネットワーク内のマシンへの SSH を許可するファイアウォール ルールを追加するには、次のコードを追加します。
# SSH を許可
resource "google_compute_firewall" "public-allow-ssh" {
name = "${google_compute_network.public-vpc.name}-allow-ssh"
network = google_compute_network.public-vpc.name
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = [
"0.0.0.0/0"
]
target_tags = ["allow-ssh"]
}
注: このルールでは、すべての場所からの SSH が許可されますが、「allow-ssh」タグが付いたマシンのみが対象となります。
- Windows マシンには SSH ではなく RDP が必要です。SSH ルールの下に次の RDP ルールを追加します。
# RDP を許可
resource "google_compute_firewall" "public-allow-rdp" {
name = "${google_compute_network.public-vpc.name}-allow-rdp"
network = google_compute_network.public-vpc.name
allow {
protocol = "tcp"
ports = ["3389"]
}
source_ranges = [
"0.0.0.0/0"
]
target_tags = ["allow-rdp"]
}
テストには Ping が役立ちます。
- 次のルールを前のルールの下に追加して有効にします。
# あらゆる場所からの ping を許可
resource "google_compute_firewall" "public-allow-ping" {
name = "${google_compute_network.public-vpc.name}-allow-ping"
network = google_compute_network.public-vpc.name
allow {
protocol = "icmp"
}
source_ranges = [
"0.0.0.0/0"
]
}
- 前回と同様、ターミナルを切り替えて次のコマンドを実行し、エラーがないか確認して、作成される内容を確認します。
terraform plan
- 次の Terraform コマンドを実行し、コンソールを使用してネットワーク、サブネット、ファイアウォール ルールがすべて作成されていることを確認します。
terraform apply -auto-approve
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Terraform を使用してファイアウォール ルールを作成する
確認
ここまでで、ネットワークとファイアウォール ルールを作成しました。次に、テストサーバーをネットワークに追加し、ファイアウォール ルールが機能するかどうかを確認します。
タスク 3. Terraform を使用して仮想マシンを作成する
- Cloud Shell コードエディタを開き、random-id-generator.tf ファイルを開いて、次のコードを追加します。
# ランダムな ID を作成する Terraform プラグイン
resource "random_id" "instance_id" {
byte_length = 4
}
この Terraform プラグインは、プログラムで追加された VM の一意の名前を生成するために使用されます。
- パブリック ネットワークに仮想マシンを作成するには、test-server-linux.tf ファイルを開き、次のコードを追加します。
# パブリック VPC にテストサーバーを作成する
resource "google_compute_instance" "test-server-linux" {
name = "public-test-server-linux-${random_id.instance_id.hex}"
machine_type = "f1-micro"
zone = var.gcp_zone_1
tags = ["allow-ssh"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
metadata_startup_script = "sudo apt-get update;"
network_interface {
network = google_compute_network.public-vpc.name
subnetwork = google_compute_subnetwork.public-subnet_1.name
access_config { }
}
}
output "test-server-linux" {
value = google_compute_instance.test-server-linux.name
}
output "test-server-linux-external-ip" {
value = google_compute_instance.test-server-linux.network_interface.0.access_config.0.nat_ip
}
output "test-server-linux-internal-ip" {
value = google_compute_instance.test-server-linux.network_interface.0.network_ip
}
注: 出力変数は、作成されたマシンの名前と内部 IP アドレス、外部 IP アドレスを返します。さらに、このマシンには、「allow-ssh」タグが付けられているため接続することができます。
最後に、network_interface セクションのコードを見てください。このコードは、先ほど作成したパブリック ネットワークにこのマシンが配置されるように構成します。
- 先ほどと同じように Terraform の plan コマンドと apply コマンドを実行して、このマシンを作成します。エラーが表示された場合は、他の 2 つのコマンドを実行する前に terraform init を再度実行する必要がある場合があります。
コマンドが完了すると、VM 名、内部 IP アドレス、外部 IP アドレスが表示されます。
-
Cloud Shell ターミナルから、そのマシンの外部 IP アドレスに ping できることを確認します。
-
コンソールで Compute Engine サービスに移動し、作成した VM を確認します。
-
[SSH] をクリックしてファイアウォール ルールが機能することを確認し、SSH セッションを終了します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Terraform を使用して仮想マシンを作成する
タスク 4. Terraform を使用してプライベート ネットワークを作成する
-
パブリック ネットワークの構成をガイドとして使用し、2 つ目のプライベート ネットワークを作成します。variables.tf ファイルに、プライベート サブネットの IP CIDR 範囲の変数を追加し、その値を terraform.tfvars ファイルで設定します。
-
vpc-network-public.tf ファイルを複製し、名前と変数を適宜変更します。
-
パブリック ファイアウォール ルールをガイドとして使用して、プライベート ネットワークのファイアウォール ルールを追加します。source_ranges セクションでは、すべてのソースからのトラフィックを許可するのではなく、パブリック サブネットの IP CIDR 範囲からのトラフィックのみを許可します。
-
パブリック ネットワークを参考に、プライベート ネットワークにテストサーバーを作成します。
注: このラボはご自身で完了してください。行き詰まった場合は、GitHub の GoogleCloudPlatform/training-data-analyst でソリューション全体を参照できます。
- すべて作成したら、公開テストサーバーに SSH で接続してみます。プライベート ネットワーク内のサーバーにはまだアクセスできません。これは次のラボで修正します。
これで完了です。データベース移行プロジェクト用の安全なネットワーク インフラストラクチャを作成しました。パブリック VPC とプライベート VPC の両方を作成し、それぞれの VPC に適切なファイアウォール ルールを設定しました。各ネットワークに仮想マシンを追加し、相互の通信をテストしました。これらすべてを Terraform を使用して行いました。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Skills から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。