FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit f61598d1 authored by Ryan Kowalewski's avatar Ryan Kowalewski :man_dancing:
Browse files

fix: local.monitor_hosts issue

A map cannot have a key which depends on a resource which is unknown.
To resolve this issue I've refactored the map to have known key names.

Closes #38
parent 0ab46d9a
No related branches found
No related tags found
1 merge request!51Fix multiple longstanding issues
...@@ -50,16 +50,18 @@ locals { ...@@ -50,16 +50,18 @@ locals {
# should be configured. # should be configured.
monitor_hosts = var.disable_monitoring ? {} : merge( monitor_hosts = var.disable_monitoring ? {} : merge(
{ {
trimsuffix(trimprefix(google_cloud_run_service.webapp.status[0].url, "https://"), "/") = { webapp = {
"enable_auth_proxy" = !var.allow_unauthenticated_invocations || local.webapp_allowed_ingress != "all", host = trimsuffix(trimprefix(google_cloud_run_service.webapp.status[0].url, "https://"), "/"),
"enable_egress_connector" = local.webapp_allowed_ingress != "all" enable_auth_proxy = !var.allow_unauthenticated_invocations || local.webapp_allowed_ingress != "all",
enable_egress_connector = local.webapp_allowed_ingress != "all"
}, },
}, },
local.can_monitor_custom_dns ? { local.can_monitor_custom_dns ? {
for dns_name in local.dns_names : for dns_name in local.dns_names :
(dns_name) => { (dns_name) => {
"enable_auth_proxy" = local.webapp_allowed_ingress == "internal", host = dns_name
"enable_egress_connector" = local.webapp_allowed_ingress == "internal" enable_auth_proxy = local.webapp_allowed_ingress == "internal",
enable_egress_connector = local.webapp_allowed_ingress == "internal"
} }
} : {} } : {}
) )
......
...@@ -20,13 +20,9 @@ resource "google_project_iam_member" "webapp_sql_client" { ...@@ -20,13 +20,9 @@ resource "google_project_iam_member" "webapp_sql_client" {
# A Cloud Run service which hosts the webapp # A Cloud Run service which hosts the webapp
resource "google_cloud_run_service" "webapp" { resource "google_cloud_run_service" "webapp" {
name = var.name name = var.name
location = var.cloud_run_region location = var.cloud_run_region
project = var.project project = var.project
# Google Beta provider is required for mounting secrets AToW
provider = google-beta
autogenerate_revision_name = true autogenerate_revision_name = true
metadata { metadata {
...@@ -198,11 +194,14 @@ resource "google_cloud_run_service" "webapp" { ...@@ -198,11 +194,14 @@ resource "google_cloud_run_service" "webapp" {
depends_on = [ depends_on = [
google_secret_manager_secret_iam_member.secrets_access, google_secret_manager_secret_iam_member.secrets_access,
] ]
# Google Beta provider is required for mounting secrets AToW
provider = google-beta
} }
# Allow unauthenticated invocations for the webapp. # Allow unauthenticated invocations for the webapp.
resource "google_cloud_run_service_iam_member" "webapp_all_users_invoker" { resource "google_cloud_run_service_iam_member" "webapp_all_users_invoker" {
count = var.allow_unauthenticated_invocations ? 1 : 0 count = var.allow_unauthenticated_invocations ? 1 : 0
location = google_cloud_run_service.webapp.location location = google_cloud_run_service.webapp.location
project = google_cloud_run_service.webapp.project project = google_cloud_run_service.webapp.project
service = google_cloud_run_service.webapp.name service = google_cloud_run_service.webapp.name
...@@ -219,8 +218,7 @@ resource "google_cloud_run_domain_mapping" "webapp" { ...@@ -219,8 +218,7 @@ resource "google_cloud_run_domain_mapping" "webapp" {
for_each = toset(var.ingress_style == "domain-mapping" ? local.dns_names : []) for_each = toset(var.ingress_style == "domain-mapping" ? local.dns_names : [])
location = var.cloud_run_region location = var.cloud_run_region
name = each.key
name = each.key
metadata { metadata {
# For managed Cloud Run, the namespace *must* be the project name. # For managed Cloud Run, the namespace *must* be the project name.
...@@ -235,11 +233,9 @@ resource "google_cloud_run_domain_mapping" "webapp" { ...@@ -235,11 +233,9 @@ resource "google_cloud_run_domain_mapping" "webapp" {
module "uptime_monitoring" { module "uptime_monitoring" {
for_each = local.monitor_hosts for_each = local.monitor_hosts
source = "git::https://gitlab.developers.cam.ac.uk/uis/devops/infra/terraform/gcp-site-monitoring.git?ref=v2" source = "git::https://gitlab.developers.cam.ac.uk/uis/devops/infra/terraform/gcp-site-monitoring.git?ref=v2"
host = each.value.host
host = each.key project = var.project
project = var.project
alert_email_addresses = var.alerting_email_address != "" ? [var.alerting_email_address] : [] alert_email_addresses = var.alerting_email_address != "" ? [var.alerting_email_address] : []
uptime_check = { uptime_check = {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment