deploy/gcp-foundation/modules/app_engine.tf (78 lines of code) (raw):

data "google_app_engine_default_service_account" "default" { depends_on = [google_project_service.gcp_services] } # grant access to secret manager for application resource "google_secret_manager_secret_iam_member" "secret-access" { secret_id = google_secret_manager_secret.db_conn_string.id role = "roles/secretmanager.secretAccessor" member = "serviceAccount:${google_service_account.waverunner.email}" } resource "google_app_engine_application" "app" { project = var.project_id location_id = var.app_engine_location iap { enabled = true oauth2_client_id = google_iap_client.project_client.client_id oauth2_client_secret = google_iap_client.project_client.secret } } resource "google_app_engine_flexible_app_version" "waverunner" { version_id = "v1" project = var.project_id service = "default" runtime = "custom" network { name = var.networkname subnetwork = var.subnetname } deployment { container { image = var.waverunner_image } } liveness_check { path = "/" } readiness_check { path = "/" } manual_scaling { instances = 2 } env_variables = { #TODO: improve this DATABASE_URL = "postgresql+psycopg2://${var.user_name}:${random_password.db_user_pass.result}@/${var.db_name}?host=/cloudsql/${var.project_id}:${var.region}:${module.sql-db.instance_name}" # port = "8080" GCS_BUCKET = google_storage_bucket.bucket.name GCS_ORACLE_BINARY_PREFIX = "" GCS_DEPLOYMENT_CONFIG_PREFIX = "ansible_config-test" USE_GCLOUD_LOGGING = "TRUE" GCS_PUBSUB_TOPIC = "projects/${var.project_id}/topics/${google_pubsub_topic.topic.0.name}" GCP_PUBSUB_TOPIC = "projects/${var.project_id}/topics/${google_pubsub_topic.topic.0.name}" GCP_PROJECT_NAME = var.project_id GCP_SERVICE_ACCOUNT = data.google_app_engine_default_service_account.default.email GCP_PROJECT_NUMBER = data.google_project.project.number GCP_CLOUD_TASKS_QUEUE = "projects/${var.project_id}/locations/${var.region}/queues/${google_cloud_tasks_queue.migsc-ctq.name}" GCP_CLOUD_RUN_SERVICE_NAME = "" #projects/${var.project_id}/locations/${var.region}/services/${var.migsc_cloudrun_appl_name}-${random_string.random.result}" GCP_OAUTH_CLIENT_ID = google_iap_client.project_client.client_id GCP_LB_URL = "" #https://${var.site_domain_name}" } beta_settings = { cloud_sql_instances = module.sql-db.instance_connection_name } noop_on_destroy = true timeouts { create = "1h" update = "1h" delete = "20m" } lifecycle { ignore_changes = [ deployment ] } depends_on = [google_project_service.gcp_services] } resource "google_iap_app_engine_service_iam_member" "access_list" { for_each = toset(var.access_users) project = var.project_id app_id = google_app_engine_flexible_app_version.waverunner.project service = google_app_engine_flexible_app_version.waverunner.service role = "roles/iap.httpsResourceAccessor" member = each.key }