よっしー
こんにちは。よっしーです(^^)
今日は、terraformによるGCPのリソース作成について解説しています。
背景
terraformによるGCPのリソース作成について調査する機会がありましたので、その時の内容を備忘として記事に残しました。
事前準備
プロジェクトを作成しておきます。
gcloud projects create terraform-20240707
main.tf
下記のファイルを作成します。
main.tf
ファイルの中身は下記になります。
% cat main.tf
resource "google_compute_network" "my" {
project = "terraform-20240707"
name = "my-custom-mode-network"
auto_create_subnetworks = false
mtu = 1460
}
resource "google_compute_subnetwork" "my" {
project = "terraform-20240707"
name = "my-custom-subnet"
ip_cidr_range = "10.0.1.0/24"
region = "us-west1"
network = google_compute_network.my.id
}
# Create a single Compute Engine instance
resource "google_compute_instance" "my" {
project = "terraform-20240707"
name = "flask-vm"
machine_type = "f1-micro"
zone = "us-west1-a"
tags = ["ssh"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
# Install Flask
metadata_startup_script = "sudo apt-get update; sudo apt-get install -yq build-essential python3-pip rsync; pip install flask"
network_interface {
subnetwork = google_compute_subnetwork.my.id
access_config {
# Include this section to give the VM an external IP address
}
}
}
リソース作成
下記のコマンドを実行します。
# プロジェクトの初期化
terraform init
# AWSリソースの作成
terraform apply
下記のような結果になれば成功です。
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
解説
main.tf
このTerraformコードはGoogle Cloud Platform (GCP) 上にネットワーク、サブネット、およびCompute Engineインスタンスを作成します。各リソースについて詳しく解説します:
- google_compute_network “my”
- プロジェクト: “terraform-20240707”
- 名前: “my-custom-mode-network”
- カスタムモードのVPCネットワークを作成(auto_create_subnetworks = false)
- MTU(最大伝送単位): 1460バイト
- google_compute_subnetwork “my”
- プロジェクト: “terraform-20240707”
- 名前: “my-custom-subnet”
- IPアドレス範囲: 10.0.1.0/24
- リージョン: us-west1
- 上記で作成したネットワークに関連付け
- google_compute_instance “my”
- プロジェクト: “terraform-20240707”
- 名前: “flask-vm”
- マシンタイプ: f1-micro(小規模で低コストのインスタンス)
- ゾーン: us-west1-a
- タグ: [“ssh”](ファイアウォールルールで使用可能)
- ブートディスク: Debian 11イメージを使用
- スタートアップスクリプト: Python、pip、Flaskをインストール
- ネットワークインターフェース:
- 上記で作成したサブネットに接続
- 外部IPアドレスを割り当て(access_config ブロックの存在により)
このコードの主な特徴:
- カスタムVPCネットワークとサブネットの作成:
- これにより、ネットワーク構成を細かく制御できます。
- Compute Engineインスタンスの作成:
- 小規模なf1-microインスタンスを使用し、コストを抑えています。
- Debian 11をOSとして使用しています。
- Flaskのインストール:
- スタートアップスクリプトでFlaskをインストールしており、Webアプリケーション開発の準備をしています。
- ネットワーク設定:
- インスタンスは作成したカスタムサブネットに接続され、外部IPアドレスも割り当てられています。
- プロジェクトの一貫性:
- すべてのリソースが同じプロジェクト “terraform-20240707” 内に作成されます。
このセットアップは、カスタムネットワーク内でFlaskアプリケーションを実行するための基本的なインフラストラクチャを提供します。セキュリティグループやファイアウォールルールの追加など、さらなる設定が必要になる可能性があります。
リポジトリ
ここに記載のコードは下記のリポジトリに保存されています。
おわりに
今日は、 terraformによるGCPのリソース作成について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント