よっしー
こんにちは。よっしーです(^^)
今日は、TerraformでGCPのリソース作成について解説しています。
背景
前回の記事の続きになります。
実施内容
main.tfに下記のリソースを追記します。
# アプリケーションで使用する Storage バケット用の新しいリソース
resource "google_storage_bucket" "example_bucket" {
name = "<UNIQUE-BUCKET-NAME>"
location = "US"
website {
main_page_suffix = "index.html"
not_found_page = "404.html"
}
}
# このバケットを使用する新しいインスタンスを作成する
resource "google_compute_instance" "another_instance" {
# この VM インスタンスの作成は、Storage バケットの作成後にのみ行うよう
# Terraform に指示する
depends_on = [google_storage_bucket.example_bucket]
name = "terraform-instance-2"
machine_type = "e2-micro"
boot_disk {
initialize_params {
image = "cos-cloud/cos-stable"
}
}
network_interface {
network = google_compute_network.vpc_network.self_link
access_config {
}
}
}
追記後、下記のコマンドを実施しました。
# 実行プランの作成
terraform plan
# 変更を適用
terraform apply
# 状態ファイルの確認
terraform show
解説
main.tf
このコードの解説をいたします。
# アプリケーションで使用する Storage バケット用の新しいリソース
resource "google_storage_bucket" "example_bucket" {
name = "<UNIQUE-BUCKET-NAME>"
location = "US"
website {
main_page_suffix = "index.html"
not_found_page = "404.html"
}
}
# このバケットを使用する新しいインスタンスを作成する
resource "google_compute_instance" "another_instance" {
# この VM インスタンスの作成は、Storage バケットの作成後にのみ行うよう
# Terraform に指示する
depends_on = [google_storage_bucket.example_bucket]
name = "terraform-instance-2"
machine_type = "e2-micro"
boot_disk {
initialize_params {
image = "cos-cloud/cos-stable"
}
}
network_interface {
network = google_compute_network.vpc_network.self_link
access_config {}
}
}
このTerraformコードは、Google Cloud Platform(GCP)上に2つのリソースを作成します:
- Google Cloud Storage バケット:
google_storage_bucket
リソースを使用して作成されます。- バケット名は
<UNIQUE-BUCKET-NAME>
で、実際の使用時には一意の名前に置き換える必要があります。 - 米国(”US”)に配置されます。
- ウェブサイトホスティング用に設定されており、メインページは “index.html”、404エラーページは “404.html” を使用します。
- Compute Engine インスタンス:
google_compute_instance
リソースを使用して作成されます。- Storage バケットの作成後にのみ作成されるよう
depends_on
で指定されています。 - インスタンス名は “terraform-instance-2” です。
- マシンタイプは “e2-micro” です。
- ブートディスクは Container-Optimized OS(COS)の安定版イメージを使用します。
- ネットワークインターフェースは、別途定義された VPC ネットワーク(
google_compute_network.vpc_network
)に接続され、外部IPアドレスも割り当てられます(access_config {}
)。
このコードは、ウェブアプリケーションのホスティングや、Compute Engineインスタンスと連携するストレージソリューションの構築などに使用できます。
おわりに
今日は、 TerraformでGCPのリソース作成について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント