locals {
egp_aws_default_tags = "${
merge(
var.extra_aws_tags,
map(
"Team","${var.team_tag}",
"CostCenter","${var.cost_center_tag}",
"Brand","${var.brand_tag}",
"Application","${var.application_tag}",
"AssetProtectionLevel","${var.asset_protection_level_tag}",
"DataClassification","${var.data_classification_tag}",
"Environment", "${var.environment_tag}",
"Tier","${var.tier_tag}",
"GCP_Environment", "${var.gcp_env_tag}",
"Owner", "${var.owner_tag}",
"LaunchedBy", "${var.launched_by_tag}",
"WeekendShutdown","${var.lab_weekend_shutdown_tag}"
)
)
}"
}
data "null_data_source" "asgTags" {
count = "${length(keys(local.egp_aws_default_tags))}"
inputs = {
key = "${element(keys(local.egp_aws_default_tags), count.index)}"
value = "${element(values(local.egp_aws_default_tags), count.index)}"
propagate_at_launch = true
}
}
resource "aws_autoscaling_group" "serviceInstanceAutoscalingGroup" {
availability_zones = "${split(",", lookup(module.defaultVars.availability_zones, format("%s.%s", var.aws_account_alias, var.aws_region)))}"
name = "${var.environment_name}-${var.aws_region}-${var.service_name}-serviceInstanceAutoscalingGroup"
max_size = "${var.service_instance_autoscaling_group_max_size}"
min_size = "${var.service_instance_autoscaling_group_min_size}"
health_check_grace_period = 300
health_check_type = "EC2"
desired_capacity = "${var.running_task_desired_count}"
vpc_zone_identifier = "${split(",", lookup(module.defaultVars.vpc_subnet_ids, format("%s.%s.%s", var.aws_account_alias, var.aws_region, var.subnet_type =="public" ? "public" : local.asg_private_subnet_type )))}"
tags = [
"${data.null_data_source.asgTags.*.outputs}",
{
key = "Name"
value = "${var.environment_name}-${var.aws_region}-${var.service_name}"
propagate_at_launch = true
}
]
}
resource "aws_launch_configuration" "serviceInstanceLaunchConfig" {
name_prefix = "${var.environment_name}-${var.aws_region}-${var.service_name}-serviceInstanceLaunchConfig-"
image_id = "${module.ami.ami_id}"
instance_type = "${var.service_instance_type}"
security_groups = ["${concat(aws_security_group.serviceInstanceSecurityGroup.*.id, aws_security_group.serviceNLBInstanceSecurityGroup.*.id, var.instance_security_group_ids)}"]
key_name = "${var.aws_key_name}"
user_data = "${data.template_file.userDataShellScript.rendered}"
root_block_device {
volume_size = "${var.volume_size}"
}
lifecycle {
create_before_destroy = true
}
}