From 85dbe9015d1ef7a9cfa8f8451f8070be58b8ac17 Mon Sep 17 00:00:00 2001 From: tanakaryo Date: Sun, 23 Jun 2024 01:38:11 +0900 Subject: [PATCH] #60 add new resource. --- .../terraform/apps/app1/README.md | 3 ++ .../app1/create-compute-engine/compute.tf | 22 +++++++++++++ .../app1/create-compute-engine/gcp.tfvars | 2 ++ .../app1/create-compute-engine/network.tf | 11 +++++++ .../app1/create-compute-engine/provider.tf | 13 ++++++++ .../app1/create-compute-engine/variables.tf | 7 ++++ .../terraform/apps/app1/gcp_arche1.drawio | 30 ++++++++++++++++++ .../terraform/apps/app1/gcp_arche1.drawio.png | Bin 0 -> 14662 bytes 8 files changed, 88 insertions(+) create mode 100644 infrastructure-as-code/terraform/apps/app1/README.md create mode 100644 infrastructure-as-code/terraform/apps/app1/create-compute-engine/compute.tf create mode 100644 infrastructure-as-code/terraform/apps/app1/create-compute-engine/gcp.tfvars create mode 100644 infrastructure-as-code/terraform/apps/app1/create-compute-engine/network.tf create mode 100644 infrastructure-as-code/terraform/apps/app1/create-compute-engine/provider.tf create mode 100644 infrastructure-as-code/terraform/apps/app1/create-compute-engine/variables.tf create mode 100644 infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio create mode 100644 infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio.png diff --git a/infrastructure-as-code/terraform/apps/app1/README.md b/infrastructure-as-code/terraform/apps/app1/README.md new file mode 100644 index 0000000..d2dd586 --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/README.md @@ -0,0 +1,3 @@ +## Architecture +#### this is simple gce architecture. +![architecture](gcp_arche1.drawio.png) \ No newline at end of file diff --git a/infrastructure-as-code/terraform/apps/app1/create-compute-engine/compute.tf b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/compute.tf new file mode 100644 index 0000000..5466f00 --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/compute.tf @@ -0,0 +1,22 @@ +resource "google_compute_instance" "instance1" { + name = "instance1" + machine_type = "e2-micro" + zone = "asia-northeast1-a" + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + labels = { + my_label = "value" + } + } + } + + network_interface { + network = google_compute_network.vpc1.name + subnetwork = google_compute_subnetwork.subnet1.name + network_ip = "10.2.0.2" + access_config { + } + } +} \ No newline at end of file diff --git a/infrastructure-as-code/terraform/apps/app1/create-compute-engine/gcp.tfvars b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/gcp.tfvars new file mode 100644 index 0000000..19c5e0b --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/gcp.tfvars @@ -0,0 +1,2 @@ +PROJECT_ID = "" +REGION = "asia-northeast1" \ No newline at end of file diff --git a/infrastructure-as-code/terraform/apps/app1/create-compute-engine/network.tf b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/network.tf new file mode 100644 index 0000000..0b605c7 --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/network.tf @@ -0,0 +1,11 @@ +resource "google_compute_network" "vpc1" { + name = "vpc1" + auto_create_subnetworks = "false" +} + +resource "google_compute_subnetwork" "subnet1" { + name = "subnet1" + ip_cidr_range = "10.2.0.0/16" + region = var.REGION + network = google_compute_network.vpc1.id +} diff --git a/infrastructure-as-code/terraform/apps/app1/create-compute-engine/provider.tf b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/provider.tf new file mode 100644 index 0000000..5511d7c --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/provider.tf @@ -0,0 +1,13 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "5.34.0" + } + } +} + +provider "google" { + project = var.PROJECT_ID + region = var.REGION +} \ No newline at end of file diff --git a/infrastructure-as-code/terraform/apps/app1/create-compute-engine/variables.tf b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/variables.tf new file mode 100644 index 0000000..2b34810 --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/create-compute-engine/variables.tf @@ -0,0 +1,7 @@ +variable "PROJECT_ID" { + type = string +} + +variable "REGION" { + type = string +} \ No newline at end of file diff --git a/infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio b/infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio new file mode 100644 index 0000000..391f24b --- /dev/null +++ b/infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio.png b/infrastructure-as-code/terraform/apps/app1/gcp_arche1.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba0834d6ef3eaa166d3e6be0ad71dc69f606b69 GIT binary patch literal 14662 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 literal 0 HcmV?d00001