google_memcache/main.tf (56 lines of code) (raw):
/**
* # Terraform Module: Memcache
* Creates a memcache instance within GCP using Cloud Memorystore
*/
locals {
default_name = "${var.application}-${var.realm}-${var.environment}"
name = coalesce(var.custom_name, local.default_name)
default_memcache_configs = {} # Add configs that should be added to all memcache instances here
memcache_configs = merge(local.default_memcache_configs, var.memcache_configs)
authorized_network = var.authorized_network
}
resource "google_project_service" "memcache" {
project = var.project_id
disable_on_destroy = "false"
service = "memcache.googleapis.com"
}
resource "google_memcache_instance" "main" {
project = var.project_id
name = local.name
authorized_network = local.authorized_network
region = var.region
depends_on = [google_project_service.memcache]
node_config {
cpu_count = var.cpu_count
memory_size_mb = var.memory_size_mb
}
node_count = var.node_count
memcache_version = var.memcache_version
dynamic "memcache_parameters" {
for_each = local.memcache_configs
content {
params = local.memcache_configs
}
}
maintenance_policy {
weekly_maintenance_window {
day = var.maintenance_window_day
duration = var.maintenance_duration
start_time {
hours = var.maintenance_window_hour
minutes = 0
seconds = 0
nanos = 0
}
}
}
labels = {
app_code = var.application
component_code = format("%s-%s", var.application, var.component)
env_code = var.environment
realm = var.realm
}
lifecycle {
prevent_destroy = true
}
}