From 9d03290e41bcb128e5f7c65595d7845416e5ed6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kr=C3=B3likowski?= Date: Mon, 15 Jan 2024 19:50:22 +0100 Subject: [PATCH 1/5] Backup: make backupID unique --- modules/schedule_spanner_backup/spanner_backup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/schedule_spanner_backup/spanner_backup.yml b/modules/schedule_spanner_backup/spanner_backup.yml index 8d70116..745f1b3 100644 --- a/modules/schedule_spanner_backup/spanner_backup.yml +++ b/modules/schedule_spanner_backup/spanner_backup.yml @@ -28,7 +28,7 @@ main: call: create_backup args: parent: ${eachValue.parent} - backupId: ${eachValue.backupId} + backupId: ${eachValue.backupId+time.format(sys.now())} database: ${eachValue.database} expireTime: ${time.format(sys.now() + eachValue.expireTime)} result: backup_result From 207c627585c016a686c07076dcb3c38c1a3eab55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kr=C3=B3likowski?= Date: Mon, 15 Jan 2024 20:13:06 +0100 Subject: [PATCH 2/5] Backup: backupID format timestamp sufix --- modules/schedule_spanner_backup/spanner_backup.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/schedule_spanner_backup/spanner_backup.yml b/modules/schedule_spanner_backup/spanner_backup.yml index 745f1b3..4e4b433 100644 --- a/modules/schedule_spanner_backup/spanner_backup.yml +++ b/modules/schedule_spanner_backup/spanner_backup.yml @@ -29,6 +29,7 @@ main: args: parent: ${eachValue.parent} backupId: ${eachValue.backupId+time.format(sys.now())} + backupId: ${eachValue.backupId+"-"+text.substring(time.format(sys.now()), 2, 10)} database: ${eachValue.database} expireTime: ${time.format(sys.now() + eachValue.expireTime)} result: backup_result From cb9f2f2f56f5a008d0a046cd4f4d67dae88a17e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kr=C3=B3likowski?= Date: Mon, 15 Jan 2024 20:14:06 +0100 Subject: [PATCH 3/5] fix typo --- modules/schedule_spanner_backup/spanner_backup.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/schedule_spanner_backup/spanner_backup.yml b/modules/schedule_spanner_backup/spanner_backup.yml index 4e4b433..033be71 100644 --- a/modules/schedule_spanner_backup/spanner_backup.yml +++ b/modules/schedule_spanner_backup/spanner_backup.yml @@ -28,7 +28,6 @@ main: call: create_backup args: parent: ${eachValue.parent} - backupId: ${eachValue.backupId+time.format(sys.now())} backupId: ${eachValue.backupId+"-"+text.substring(time.format(sys.now()), 2, 10)} database: ${eachValue.database} expireTime: ${time.format(sys.now() + eachValue.expireTime)} From 54ee934063a016a63d22a89dabc3c67a5039f6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kr=C3=B3likowski?= Date: Mon, 15 Jan 2024 20:34:33 +0100 Subject: [PATCH 4/5] backup name format without hypens --- modules/schedule_spanner_backup/spanner_backup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/schedule_spanner_backup/spanner_backup.yml b/modules/schedule_spanner_backup/spanner_backup.yml index 033be71..5dc79c9 100644 --- a/modules/schedule_spanner_backup/spanner_backup.yml +++ b/modules/schedule_spanner_backup/spanner_backup.yml @@ -28,7 +28,7 @@ main: call: create_backup args: parent: ${eachValue.parent} - backupId: ${eachValue.backupId+"-"+text.substring(time.format(sys.now()), 2, 10)} + backupId: ${eachValue.backupId+"-"+ text.replace_all(text.substring(time.format(sys.now()), 2, 10), "-","")} database: ${eachValue.database} expireTime: ${time.format(sys.now() + eachValue.expireTime)} result: backup_result From c02ccac823dc093e5b168c2dbc9cef935cfb581a Mon Sep 17 00:00:00 2001 From: Pawel Karoluk Date: Wed, 23 Oct 2024 01:45:48 +0200 Subject: [PATCH 5/5] add editions support and bump provider version --- main.tf | 2 ++ modules/schedule_spanner_backup/main.tf | 15 +++++++-------- modules/schedule_spanner_backup/versions.tf | 4 ++-- variables.tf | 10 ++++++++++ versions.tf | 4 ++-- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/main.tf b/main.tf index 2516579..d77da87 100644 --- a/main.tf +++ b/main.tf @@ -50,6 +50,7 @@ resource "google_spanner_instance" "instance_num_node" { config = var.instance_config display_name = var.instance_display_name name = var.instance_name + edition = var.edition num_nodes = var.instance_size.num_nodes labels = var.instance_labels } @@ -60,6 +61,7 @@ resource "google_spanner_instance" "instance_processing_units" { config = var.instance_config display_name = var.instance_display_name name = var.instance_name + edition = var.edition processing_units = var.instance_size.processing_units labels = var.instance_labels } diff --git a/modules/schedule_spanner_backup/main.tf b/modules/schedule_spanner_backup/main.tf index 43a84ea..18aa437 100644 --- a/modules/schedule_spanner_backup/main.tf +++ b/modules/schedule_spanner_backup/main.tf @@ -15,18 +15,17 @@ */ module "service_account_scheduler" { - source = "terraform-google-modules/service-accounts/google" - version = "~> 4.1.1" - project_id = var.project_id - prefix = "spanner-backup-scheduler" - names = ["1"] - + source = "terraform-google-modules/service-accounts/google" + version = "~> 4.4.0" + project_id = var.project_id + prefix = "spanner-backup-scheduler" + names = ["1"] project_roles = ["${var.project_id}=>roles/workflows.invoker"] } module "service_account_workflow" { source = "terraform-google-modules/service-accounts/google" - version = "~> 4.1.1" + version = "~> 4.4.0" project_id = var.project_id prefix = "spanner-backup-workflow" names = ["1"] @@ -34,7 +33,7 @@ module "service_account_workflow" { } module "workflow" { - source = "github.com/GoogleCloudPlatform/terraform-google-cloud-workflows?ref=v0.1.1" + source = "github.com/livechat/terraform-google-cloud-workflows" project_id = var.project_id workflow_name = "spanner-backup-workflow" region = var.backup_schedule_region diff --git a/modules/schedule_spanner_backup/versions.tf b/modules/schedule_spanner_backup/versions.tf index 0bc74dc..33f3108 100644 --- a/modules/schedule_spanner_backup/versions.tf +++ b/modules/schedule_spanner_backup/versions.tf @@ -15,11 +15,11 @@ */ terraform { - required_version = ">= 0.13" + required_version = ">= 1.5.0" required_providers { google = { source = "hashicorp/google" - version = ">= 3.53, < 7" + version = ">= 6.8.0, < 7" } } diff --git a/variables.tf b/variables.tf index f4c6906..583fa7e 100644 --- a/variables.tf +++ b/variables.tf @@ -52,6 +52,16 @@ variable "instance_size" { } } +variable "edition" { + description = "The edition selected for this instance. Different editions provide different capabilities at different price points." + type = string + default = "STANDARD" + validation { + condition = can(regex("^(EDITION_UNSPECIFIED|STANDARD|ENTERPRISE|ENTERPRISE_PLUS)$", var.edition)) + error_message = "The edition must be one of the following: STANDARD, ENTERPRISE, ENTERPRISE_PLUS or EDITION_UNSPECIFIED" + } +} + variable "create_instance" { description = "Switch to use create OR use existing Spanner Instance " type = bool diff --git a/versions.tf b/versions.tf index 51ed5dd..e0eb2a3 100644 --- a/versions.tf +++ b/versions.tf @@ -15,11 +15,11 @@ */ terraform { - required_version = ">= 0.13" + required_version = ">= 1.5.0" required_providers { google = { source = "hashicorp/google" - version = ">= 3.53, < 7" + version = ">= 6.8, < 7" } }