From 2358b9fe4388d4fcd8208b2566ce928e94c64456 Mon Sep 17 00:00:00 2001 From: Slawomir Koszewski Date: Mon, 2 Feb 2026 22:39:58 +0100 Subject: [PATCH] Add Terraform configuration files for Cloud Run service deployment --- terraform/.gitignore | 7 ++++++ terraform/main.tf | 41 +++++++++++++++++++++++++++++++++ terraform/providers.tf | 13 +++++++++++ terraform/terraform.tfvars.json | 5 ++++ terraform/variables.tf | 21 +++++++++++++++++ 5 files changed, 87 insertions(+) create mode 100644 terraform/.gitignore create mode 100644 terraform/main.tf create mode 100644 terraform/providers.tf create mode 100644 terraform/terraform.tfvars.json create mode 100644 terraform/variables.tf diff --git a/terraform/.gitignore b/terraform/.gitignore new file mode 100644 index 0000000..60f340f --- /dev/null +++ b/terraform/.gitignore @@ -0,0 +1,7 @@ +# Terraform +*.tfstate +*.tfstate.* +.terraform/ +.terraform.lock.hcl +.terraform.lock.hcl.backup +*tfplan diff --git a/terraform/main.tf b/terraform/main.tf new file mode 100644 index 0000000..63b6be7 --- /dev/null +++ b/terraform/main.tf @@ -0,0 +1,41 @@ +# Create Cloud Run service +resource "google_cloud_run_v2_service" "jppg" { + name = "jmespath-playground" + location = var.default_region + invoker_iam_disabled = true + + template { + containers { + image = "skoszewski/jmespath-playground:${var.image_version}" + name = "jmespath-playground-1" + ports { + container_port = 3000 + } + } + } + + scaling { + max_instance_count = 1 + } + + deletion_protection = var.deletion_protection + + lifecycle { + ignore_changes = [ + client + ] + } +} + +resource "google_cloud_run_domain_mapping" "jppg" { + name = "jmespath-playground.gcp-lab.koszewscy.waw.pl" + location = var.default_region + + spec { + route_name = google_cloud_run_v2_service.jppg.name + } + + metadata { + namespace = var.project_id + } +} diff --git a/terraform/providers.tf b/terraform/providers.tf new file mode 100644 index 0000000..e7eb0e8 --- /dev/null +++ b/terraform/providers.tf @@ -0,0 +1,13 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~>7.17.0" + } + } +} + +provider "google" { + project = var.project_id + region = var.default_region +} diff --git a/terraform/terraform.tfvars.json b/terraform/terraform.tfvars.json new file mode 100644 index 0000000..c863a57 --- /dev/null +++ b/terraform/terraform.tfvars.json @@ -0,0 +1,5 @@ +{ + "project_id": "dom-lab", + "image_version": "1.4.3", + "deletion_protection": true +} diff --git a/terraform/variables.tf b/terraform/variables.tf new file mode 100644 index 0000000..0fa6b49 --- /dev/null +++ b/terraform/variables.tf @@ -0,0 +1,21 @@ +variable "project_id" { + description = "Google project id" + type = string +} + +variable "default_region" { + description = "Default Google Cloud region" + type = string + default = "europe-west1" # Belgium +} + +variable "image_version" { + description = "Version of the Docker image" + type = string +} + +variable "deletion_protection" { + type = bool + description = "Protect resources from deletion using terraform destroy and apply." + default = true +}