terraform/gke/unified/main.tf (113 lines of code) (raw):

/** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ terraform { required_providers { google = { source = "hashicorp/google" version = "6.24.0" } kubernetes = { source = "hashicorp/kubernetes" version = "2.36.0" } } } provider "google" { project = var.project_id region = var.region } resource "google_service_account" "autoscaler_sa" { account_id = "scaler-sa" display_name = "Memorystore Cluster Autoscaler - Scaler SA" } module "autoscaler-base" { source = "../../modules/autoscaler-base" project_id = var.project_id poller_sa_email = google_service_account.autoscaler_sa.email scaler_sa_email = google_service_account.autoscaler_sa.email } module "autoscaler-gke" { source = "../../modules/autoscaler-gke" region = var.region project_id = var.project_id name = "memorystore-cluster-autoscaler" network = module.autoscaler-network.network_name subnetwork = module.autoscaler-network.subnetwork_name ip_range_master = "10.1.0.0/28" ip_range_pods = "" ip_range_services = "" poller_sa_email = google_service_account.autoscaler_sa.email scaler_sa_email = google_service_account.autoscaler_sa.email } module "autoscaler-firestore" { count = !var.terraform_spanner_state ? 1 : 0 source = "../../modules/autoscaler-firestore" project_id = var.project_id region = var.region firestore_state_database = var.firestore_state_database poller_sa_email = google_service_account.autoscaler_sa.email scaler_sa_email = google_service_account.autoscaler_sa.email } module "autoscaler-spanner" { source = "../../modules/autoscaler-spanner" region = var.region project_id = var.project_id terraform_spanner_state = var.terraform_spanner_state spanner_state_name = var.spanner_state_name spanner_state_database = var.spanner_state_database poller_sa_email = google_service_account.autoscaler_sa.email scaler_sa_email = google_service_account.autoscaler_sa.email } module "autoscaler-network" { source = "../../modules/autoscaler-network" region = var.region project_id = var.project_id ip_range = var.ip_range memorystore_engine = var.memorystore_engine // Required for PSC service class } module "autoscaler-memorystore-cluster" { source = "../../modules/autoscaler-memorystore-cluster" region = var.region project_id = var.project_id memorystore_cluster_name = var.memorystore_cluster_name network = module.autoscaler-network.network subnetwork = module.autoscaler-network.subnetwork dns_zone = module.autoscaler-network.dns_zone terraform_memorystore_cluster = var.terraform_memorystore_cluster poller_sa_email = google_service_account.autoscaler_sa.email scaler_sa_email = google_service_account.autoscaler_sa.email memorystore_shard_count = var.memorystore_shard_count memorystore_replica_count = var.memorystore_replica_count memorystore_engine = var.memorystore_engine depends_on = [module.autoscaler-network] } module "autoscaler-test-vm" { count = var.terraform_test_vm && var.terraform_memorystore_cluster ? 1 : 0 source = "../../modules/autoscaler-test-vm" region = var.region project_id = var.project_id name = var.terraform_test_vm_name network = module.autoscaler-network.network subnetwork = module.autoscaler-network.subnetwork } module "autoscaler-monitoring" { count = var.terraform_dashboard ? 1 : 0 source = "../../modules/autoscaler-monitoring" region = var.region project_id = var.project_id memorystore_cluster_name = var.memorystore_cluster_name memorystore_engine = var.memorystore_engine }