From 8ca3e962e51a894fdb53dd934130dc8c9692255f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 17:40:47 +0100 Subject: [PATCH 01/14] Add support for valkey and passing valkey_url in dev environment --- tf/environments/dev/main.tf | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index a11c5067..47b72b6d 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -452,6 +452,21 @@ module "oonitier1plus_cluster" { #### OONI Tier0 +resource "aws_elasticache_cluster" "ooniapi" { + cluster_id = "ooniapi-valkey" + engine = "valkey" + node_type = "cache.t4g.micro" + num_cache_nodes = 1 + parameter_group_name = "default.valkey8.2" + engine_version = "8.2" + port = 6379 +} + +locals { + ooniapi_valkey_node = aws_elasticache_cluster.ooniapi.cache_nodes[0] + ooniapi_valkey_url = "valkey://${local.ooniapi_valkey_node.address}:${local.ooniapi_valkey_node.port}" +} + #### OONI Probe service # For accessing the s3 bucket @@ -1057,6 +1072,7 @@ module "ooniapi_oonimeasurements" { JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn CLICKHOUSE_URL = data.aws_ssm_parameter.clickhouse_readonly_test_url.arn + VALKEY_URL = local.ooniapi_valkey_url } task_environment = { From 525b666a45854cf03e0aada36953379b5e5c8cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 17:42:21 +0100 Subject: [PATCH 02/14] Point to rate-limiter branch --- tf/environments/dev/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 47b72b6d..66173710 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -1041,7 +1041,7 @@ module "ooniapi_oonimeasurements_deployer" { service_name = "oonimeasurements" repo = "ooni/backend" - branch_name = "cusum-changepoint-api" + branch_name = "rate-limiter" trigger_path = "ooniapi/services/oonimeasurements/**" buildspec_path = "ooniapi/services/oonimeasurements/buildspec.yml" codestar_connection_arn = aws_codestarconnections_connection.oonidevops.arn From 085ff4e101a6a80a19aa09635e9ace55ccec6ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 19:00:03 +0100 Subject: [PATCH 03/14] Add elasticache permission --- tf/modules/adm_iam_roles/main.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/tf/modules/adm_iam_roles/main.tf b/tf/modules/adm_iam_roles/main.tf index 39c055dd..aa5c525f 100644 --- a/tf/modules/adm_iam_roles/main.tf +++ b/tf/modules/adm_iam_roles/main.tf @@ -30,6 +30,7 @@ resource "aws_iam_policy" "oonidevops" { "autoscaling:*", "application-autoscaling:*", "elasticloadbalancing:*", + "elasticache:*", "acm:*", "cloudformation:*", "cloudtrail:*", From 8f6def6600779aadfd0ab1670ea9a27467b33b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 19:06:53 +0100 Subject: [PATCH 04/14] Fix parameter group name --- tf/environments/dev/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 66173710..2458a8ac 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -457,7 +457,7 @@ resource "aws_elasticache_cluster" "ooniapi" { engine = "valkey" node_type = "cache.t4g.micro" num_cache_nodes = 1 - parameter_group_name = "default.valkey8.2" + parameter_group_name = "default.valkey8" engine_version = "8.2" port = 6379 } From 29b7e767b7cf3fdc6d9d4cca6be4c3b51a2245f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 19:36:19 +0100 Subject: [PATCH 05/14] Use serverless cache instead of cluster --- tf/environments/dev/main.tf | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 2458a8ac..950eba8e 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -452,19 +452,25 @@ module "oonitier1plus_cluster" { #### OONI Tier0 -resource "aws_elasticache_cluster" "ooniapi" { - cluster_id = "ooniapi-valkey" - engine = "valkey" - node_type = "cache.t4g.micro" - num_cache_nodes = 1 - parameter_group_name = "default.valkey8" - engine_version = "8.2" - port = 6379 +resource "aws_elasticache_serverless_cache" "ooniapi" { + name = "ooniapi-${local.environment}-cache" + engine = "valkey" + cache_usage_limits { + data_storage { + maximum = 10 + unit = "GB" + } + ecpu_per_second { + maximum = 5000 + } + } + major_engine_version = "8" + security_group_ids = [module.ooniapi_cluster.web_security_group_id] + subnet_ids = module.network.vpc_subnet_private[*].id } locals { - ooniapi_valkey_node = aws_elasticache_cluster.ooniapi.cache_nodes[0] - ooniapi_valkey_url = "valkey://${local.ooniapi_valkey_node.address}:${local.ooniapi_valkey_node.port}" + ooniapi_valkey_url = "valkey://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" } #### OONI Probe service From 7c78b61ad71395a826ef0d29c8d31f8008abead7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Mon, 2 Feb 2026 19:37:57 +0100 Subject: [PATCH 06/14] Move config into task env vars --- tf/environments/dev/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 950eba8e..f59aa9f6 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -1078,7 +1078,6 @@ module "ooniapi_oonimeasurements" { JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn CLICKHOUSE_URL = data.aws_ssm_parameter.clickhouse_readonly_test_url.arn - VALKEY_URL = local.ooniapi_valkey_url } task_environment = { @@ -1086,6 +1085,7 @@ module "ooniapi_oonimeasurements" { OTHER_COLLECTORS = jsonencode(["http://fastpath.${local.environment}.ooni.io:8475", "https://backend-hel.ooni.org"]) BASE_URL = "https://api.${local.environment}.ooni.io" S3_BUCKET_NAME = "ooni-data-eu-fra-test" + VALKEY_URL = local.ooniapi_valkey_url } ooniapi_service_security_groups = [ From d211c5b1e44ed13230d16a2ee61c9940f58da75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz?= Date: Tue, 3 Feb 2026 11:00:44 +0100 Subject: [PATCH 07/14] Add elastic cache security group to allow traffic in port 6379 --- tf/environments/dev/main.tf | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index f59aa9f6..2bb53fc4 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -465,7 +465,10 @@ resource "aws_elasticache_serverless_cache" "ooniapi" { } } major_engine_version = "8" - security_group_ids = [module.ooniapi_cluster.web_security_group_id] + security_group_ids = [ + module.ooniapi_cluster.web_security_group_id, + aws_security_group.elasticache_sg.id + ] subnet_ids = module.network.vpc_subnet_private[*].id } @@ -473,6 +476,28 @@ locals { ooniapi_valkey_url = "valkey://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" } + +resource "aws_security_group" "elasticache_sg" { + description = "Allows access to port 6379 for the cache service" + name_prefix = "ooni-elasticache" + + vpc_id = module.network.vpc_id + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_security_group_rule" "elasticache_sg_rule" { + + type = "ingress" + from_port = 6379 + to_port = 6379 + protocol = "tcp" + cidr_blocks = concat(module.network.vpc_subnet_private[*].cidr_block, module.network.vpc_subnet_public[*].cidr_block) + security_group_id = aws_security_group.elasticache_sg.id +} + #### OONI Probe service # For accessing the s3 bucket From c927d08c293f560488a989f7d4d4e03ce64e031a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz?= Date: Tue, 3 Feb 2026 13:21:11 +0100 Subject: [PATCH 08/14] Change valkey url format --- tf/environments/dev/main.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 2bb53fc4..49c1e977 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -473,7 +473,8 @@ resource "aws_elasticache_serverless_cache" "ooniapi" { } locals { - ooniapi_valkey_url = "valkey://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" + # ooniapi_valkey_url = "valkey://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" + ooniapi_valkey_url = "${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}" } From 7f1f979bee2f22b86f1d385d349a6f1ec4360847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz?= Date: Tue, 3 Feb 2026 13:38:11 +0100 Subject: [PATCH 09/14] make valkey url use ssl --- tf/environments/dev/main.tf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 49c1e977..25b643d1 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -473,8 +473,7 @@ resource "aws_elasticache_serverless_cache" "ooniapi" { } locals { - # ooniapi_valkey_url = "valkey://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" - ooniapi_valkey_url = "${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}" + ooniapi_valkey_url = "valkeys://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" } From 54c20de984aa879a98710a4ee6c37fb768db5e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz?= Date: Tue, 3 Feb 2026 13:44:01 +0100 Subject: [PATCH 10/14] remove tony's account --- tf/environments/dev/main.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 25b643d1..f9100ee8 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -79,7 +79,6 @@ module "adm_iam_roles" { "arn:aws:iam::${local.ooni_main_org_id}:user/art", "arn:aws:iam::${local.ooni_main_org_id}:user/mehul", "arn:aws:iam::${local.ooni_main_org_id}:user/luis", - "arn:aws:iam::${local.ooni_main_org_id}:user/tony" ] } From 6e6985ca17b24497944a957912219e2e3186d85d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Thu, 5 Feb 2026 13:11:02 +0100 Subject: [PATCH 11/14] Set ACCOUNT_ID_HASHING_KEY in dev environment --- tf/environments/dev/main.tf | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index f9100ee8..0b27430c 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -238,6 +238,10 @@ data "aws_ssm_parameter" "clickhouse_readonly_test_url" { name = "/oonidevops/secrets/clickhouse_readonly_test_url" } +data "aws_ssm_parameter" "account_id_hashing_key" { + name = "/oonidevops/secrets/ooni_services/account_id_hashing_key" +} + resource "random_id" "artifact_id" { byte_length = 4 } @@ -464,11 +468,11 @@ resource "aws_elasticache_serverless_cache" "ooniapi" { } } major_engine_version = "8" - security_group_ids = [ + security_group_ids = [ module.ooniapi_cluster.web_security_group_id, aws_security_group.elasticache_sg.id ] - subnet_ids = module.network.vpc_subnet_private[*].id + subnet_ids = module.network.vpc_subnet_private[*].id } locals { @@ -489,12 +493,12 @@ resource "aws_security_group" "elasticache_sg" { resource "aws_security_group_rule" "elasticache_sg_rule" { - type = "ingress" + type = "ingress" from_port = 6379 to_port = 6379 protocol = "tcp" cidr_blocks = concat(module.network.vpc_subnet_private[*].cidr_block, module.network.vpc_subnet_public[*].cidr_block) - security_group_id = aws_security_group.elasticache_sg.id + security_group_id = aws_security_group.elasticache_sg.id } #### OONI Probe service @@ -1033,6 +1037,7 @@ module "ooniapi_ooniauth" { POSTGRESQL_URL = data.aws_ssm_parameter.oonipg_url.arn JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn + ACCOUNT_ID_HASHING_KEY = data.aws_ssm_parameter.account_id_hashing_key.arn AWS_SECRET_ACCESS_KEY = module.ooniapi_user.aws_secret_access_key_arn AWS_ACCESS_KEY_ID = module.ooniapi_user.aws_access_key_id_arn @@ -1102,6 +1107,7 @@ module "ooniapi_oonimeasurements" { JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn CLICKHOUSE_URL = data.aws_ssm_parameter.clickhouse_readonly_test_url.arn + ACCOUNT_ID_HASHING_KEY = data.aws_ssm_parameter.account_id_hashing_key.arn } task_environment = { From 00df584614afbc6612eab5d9d386bc420fe81ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Thu, 5 Feb 2026 13:15:46 +0100 Subject: [PATCH 12/14] Add support for deploying oonimeasurements with elasticache in prod --- tf/environments/dev/main.tf | 2 ++ tf/environments/prod/main.tf | 56 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 0b27430c..7e9d41e1 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -455,6 +455,8 @@ module "oonitier1plus_cluster" { #### OONI Tier0 +##### Elasticache valkey cache + resource "aws_elasticache_serverless_cache" "ooniapi" { name = "ooniapi-${local.environment}-cache" engine = "valkey" diff --git a/tf/environments/prod/main.tf b/tf/environments/prod/main.tf index 72fd2aeb..8b22f17f 100644 --- a/tf/environments/prod/main.tf +++ b/tf/environments/prod/main.tf @@ -238,6 +238,10 @@ data "aws_ssm_parameter" "clickhouse_readonly_url" { name = "/oonidevops/secrets/clickhouse_readonly_url" } +data "aws_ssm_parameter" "account_id_hashing_key" { + name = "/oonidevops/secrets/ooni_services/account_id_hashing_key" +} + # Manually managed with the AWS console data "aws_ssm_parameter" "prometheus_metrics_password" { name = "/oonidevops/ooni_services/prometheus_metrics_password" @@ -674,6 +678,55 @@ module "oonitier1plus_cluster" { #### OONI Tier0 +##### Elasticache valkey cache + +resource "aws_elasticache_serverless_cache" "ooniapi" { + name = "ooniapi-${local.environment}-cache" + engine = "valkey" + cache_usage_limits { + data_storage { + maximum = 10 + unit = "GB" + } + ecpu_per_second { + maximum = 5000 + } + } + major_engine_version = "8" + security_group_ids = [ + module.ooniapi_cluster.web_security_group_id, + aws_security_group.elasticache_sg.id + ] + subnet_ids = module.network.vpc_subnet_private[*].id +} + +locals { + ooniapi_valkey_url = "valkeys://${aws_elasticache_serverless_cache.ooniapi.endpoint[0].address}:${aws_elasticache_serverless_cache.ooniapi.endpoint[0].port}" +} + + +resource "aws_security_group" "elasticache_sg" { + description = "Allows access to port 6379 for the cache service" + name_prefix = "ooni-elasticache" + + vpc_id = module.network.vpc_id + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_security_group_rule" "elasticache_sg_rule" { + + type = "ingress" + from_port = 6379 + to_port = 6379 + protocol = "tcp" + cidr_blocks = concat(module.network.vpc_subnet_private[*].cidr_block, module.network.vpc_subnet_public[*].cidr_block) + security_group_id = aws_security_group.elasticache_sg.id +} + + #### OONI Probe service # For accessing the s3 bucket @@ -1015,6 +1068,7 @@ module "ooniapi_ooniauth" { POSTGRESQL_URL = data.aws_ssm_parameter.oonipg_url.arn JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn + ACCOUNT_ID_HASHING_KEY = data.aws_ssm_parameter.account_id_hashing_key.arn AWS_SECRET_ACCESS_KEY = module.ooniapi_user.aws_secret_access_key_arn AWS_ACCESS_KEY_ID = module.ooniapi_user.aws_access_key_id_arn @@ -1086,6 +1140,7 @@ module "ooniapi_oonimeasurements" { JWT_ENCRYPTION_KEY = data.aws_ssm_parameter.jwt_secret.arn PROMETHEUS_METRICS_PASSWORD = data.aws_ssm_parameter.prometheus_metrics_password.arn CLICKHOUSE_URL = data.aws_ssm_parameter.clickhouse_readonly_url.arn + ACCOUNT_ID_HASHING_KEY = data.aws_ssm_parameter.account_id_hashing_key.arn } task_environment = { @@ -1096,6 +1151,7 @@ module "ooniapi_oonimeasurements" { ]) BASE_URL = "https://api.ooni.io" S3_BUCKET_NAME = "ooni-data-eu-fra" + VALKEY_URL = local.ooniapi_valkey_url } ooniapi_service_security_groups = [ From e0b3129aef6accb74b0ac6a2d26bd9e2378bb6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Thu, 5 Feb 2026 15:24:39 +0100 Subject: [PATCH 13/14] Point dev env to master --- tf/environments/dev/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 7e9d41e1..7ad0aa9b 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -1078,7 +1078,7 @@ module "ooniapi_oonimeasurements_deployer" { service_name = "oonimeasurements" repo = "ooni/backend" - branch_name = "rate-limiter" + branch_name = "master" trigger_path = "ooniapi/services/oonimeasurements/**" buildspec_path = "ooniapi/services/oonimeasurements/buildspec.yml" codestar_connection_arn = aws_codestarconnections_connection.oonidevops.arn From a8228dfaaf06bf89825b5c79b196ea51fe8c804d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Filast=C3=B2?= Date: Thu, 5 Feb 2026 15:29:16 +0100 Subject: [PATCH 14/14] Update tf lockfile --- tf/environments/prod/.terraform.lock.hcl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tf/environments/prod/.terraform.lock.hcl b/tf/environments/prod/.terraform.lock.hcl index 1eff2df3..500bb537 100644 --- a/tf/environments/prod/.terraform.lock.hcl +++ b/tf/environments/prod/.terraform.lock.hcl @@ -6,6 +6,7 @@ provider "registry.terraform.io/digitalocean/digitalocean" { constraints = "~> 2.0" hashes = [ "h1:7UznWVOvFb/mjGPuZU3O/uzStEqrRYxaPFUhnGLfWqc=", + "h1:UdblXdxTzD3jYOQHW6ZI8ptAjQoFog5RIXqnbXStI8M=", "zh:06fd036391b1e67e33b9aeb6e717b3be7f3fa358192111ac6cebc6d71e69ae17", "zh:159fd52b64482467994faf7fa2988f53817f7e213ddf0a5e51de3d49375d9c36", "zh:16b91e919a2b6f49cd6882d4241b9e05480a3838804114208e60f1b47b29b8e6", @@ -30,6 +31,7 @@ provider "registry.terraform.io/hashicorp/aws" { constraints = ">= 4.9.0, >= 4.66.1" hashes = [ "h1:bixp2PSsP5ZGBczGCxcbSDn6lF5QFlUXlNroq9cdab4=", + "h1:emgTfB1LXSFYh9uAwgsRMoMIN5Wz7jNNKq3rqC0EHWk=", "zh:177a24b806c72e8484b5cabc93b2b38e3d770ae6f745a998b54d6619fd0e8129", "zh:4ac4a85c14fb868a3306b542e6a56c10bd6c6d5a67bc0c9b8f6a9060cf5f3be7", "zh:552652185bc85c8ba1da1d65dea47c454728a5c6839c458b6dcd3ce71c19ccfc", @@ -51,6 +53,7 @@ provider "registry.terraform.io/hashicorp/aws" { provider "registry.terraform.io/hashicorp/cloudinit" { version = "2.3.7" hashes = [ + "h1:M9TpQxKAE/hyOwytdX9MUNZw30HoD/OXqYIug5fkqH8=", "h1:iZ27qylcH/2bs685LJTKOKcQ+g7cF3VwN3kHMrzm4Ow=", "zh:06f1c54e919425c3139f8aeb8fcf9bceca7e560d48c9f0c1e3bb0a8ad9d9da1e", "zh:0e1e4cf6fd98b019e764c28586a386dc136129fef50af8c7165a067e7e4a31d5", @@ -71,6 +74,7 @@ provider "registry.terraform.io/hashicorp/dns" { version = "3.4.3" hashes = [ "h1:8wz2nUJwdMb9YWFX67SbX5HoFLINXm+XRQxWxVy0I1I=", + "h1:WBVHb9d5DHqYke9lUSDsCgWTbR5s5nJAocmVu8MixoY=", "zh:11526db629adb59e5069aa9af6549f9a274e00365db5e2ea32ed3fef548b2112", "zh:198a1cd01c6bcb2c00146ac38aabcf04e9f027442bbe9c3ec7aa31220a6964d9", "zh:3b6d141ef3ad2978b6efddc780b3444e50e4c3988ccd45f8756398669ec52189", @@ -90,6 +94,7 @@ provider "registry.terraform.io/hashicorp/local" { version = "2.6.1" constraints = ">= 2.0.0" hashes = [ + "h1:DbiR/D2CPigzCGweYIyJH0N0x04oyI5xiZ9wSW/s3kQ=", "h1:LMoX85QLTgCCqRuy2aXoz47P7gZ4WRPSA00fUPC/Rho=", "zh:10050d08f416de42a857e4b6f76809aae63ea4ec6f5c852a126a915dede814b4", "zh:2df2a3ebe9830d4759c59b51702e209fe053f47453cb4688f43c063bac8746b7", @@ -109,6 +114,7 @@ provider "registry.terraform.io/hashicorp/local" { provider "registry.terraform.io/hashicorp/null" { version = "3.2.4" hashes = [ + "h1:L5V05xwp/Gto1leRryuesxjMfgZwjb7oool4WS1UEFQ=", "h1:hkf5w5B6q8e2A42ND2CjAvgvSN3puAosDmOJb3zCVQM=", "zh:59f6b52ab4ff35739647f9509ee6d93d7c032985d9f8c6237d1f8a59471bbbe2", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", @@ -129,6 +135,7 @@ provider "registry.terraform.io/hashicorp/random" { version = "3.7.2" hashes = [ "h1:356j/3XnXEKr9nyicLUufzoF4Yr6hRy481KIxRVpK0c=", + "h1:KG4NuIBl1mRWU0KD/BGfCi1YN/j3F7H4YgeeM7iSdNs=", "zh:14829603a32e4bc4d05062f059e545a91e27ff033756b48afbae6b3c835f508f", "zh:1527fb07d9fea400d70e9e6eb4a2b918d5060d604749b6f1c361518e7da546dc", "zh:1e86bcd7ebec85ba336b423ba1db046aeaa3c0e5f921039b3f1a6fc2f978feab", @@ -149,6 +156,7 @@ provider "registry.terraform.io/hashicorp/time" { constraints = ">= 0.7.1" hashes = [ "h1:+W+DMrVoVnoXo3f3M4W+OpZbkCrUn6PnqDF33D2Cuf0=", + "h1:ZT5ppCNIModqk3iOkVt5my8b8yBHmDpl663JtXAIRqM=", "zh:02cb9aab1002f0f2a94a4f85acec8893297dc75915f7404c165983f720a54b74", "zh:04429b2b31a492d19e5ecf999b116d396dac0b24bba0d0fb19ecaefe193fdb8f", "zh:26f8e51bb7c275c404ba6028c1b530312066009194db721a8427a7bc5cdbc83a", @@ -168,6 +176,7 @@ provider "registry.terraform.io/hashicorp/tls" { version = "4.1.0" hashes = [ "h1:Ka8mEwRFXBabR33iN/WTIEW6RP0z13vFsDlwn11Pf2I=", + "h1:zEv9tY1KR5vaLSyp2lkrucNJ+Vq3c+sTFK9GyQGLtFs=", "zh:14c35d89307988c835a7f8e26f1b83ce771e5f9b41e407f86a644c0152089ac2", "zh:2fb9fe7a8b5afdbd3e903acb6776ef1be3f2e587fb236a8c60f11a9fa165faa8", "zh:35808142ef850c0c60dd93dc06b95c747720ed2c40c89031781165f0c2baa2fc",