managed-instance-group/mig.tf (48 lines of code) (raw):
data "template_file" "startup_script" {
template = "${format("%s%s", file("${path.module}/scripts/common.sh.tpl"), file("${path.module}/scripts/${var.web_server}.sh.tpl"))}"
vars = {
WEB_SERVER = var.web_server
DOMAIN_NAME = var.domain_name
DB_NAME = var.db_name
DB_USER = var.db_user
DB_PASSWORD = var.db_password
DB_HOST = var.db_host
}
}
data "google_service_account" "vm" {
account_id = var.service_account
}
module "instance_template" {
source = "terraform-google-modules/vm/google//modules/instance_template"
version = "~> 7.4.0"
name_prefix = var.hostname_prefix
subnetwork = data.google_compute_subnetwork.this.name
service_account = {
email = data.google_service_account.vm.email
scopes = ["cloud-platform"]
}
disk_type = var.disk_type
machine_type = var.machine_type
region = data.google_client_config.current.region
startup_script = data.template_file.startup_script.rendered
source_image = var.image
source_image_project = var.image_project
tags = compact([
var.hostname_prefix,
var.nat_router_name,
])
}
module "mig" {
source = "terraform-google-modules/vm/google//modules/mig"
version = "~> 7.4.0"
project_id = data.google_client_config.current.project
region = data.google_client_config.current.region
target_size = var.target_size
hostname = var.hostname_prefix
instance_template = module.instance_template.self_link
subnetwork = data.google_compute_subnetwork.this.name
named_ports = [{
name = "http",
port = var.port
}]
}