From 530d3c83442e774d1a88a5135c3103e79cd8252b Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Thu, 1 Aug 2019 10:21:46 +0100 Subject: [PATCH 1/2] (Fix) Ensure `tags` is only provided once in aws_autoscaling_group --- main.tf | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/main.tf b/main.tf index f550420..db866a7 100644 --- a/main.tf +++ b/main.tf @@ -48,6 +48,16 @@ resource "aws_launch_configuration" "ecs" { } } +locals { + ecs_asg_tags_init = [{ + key = "Name" + value = "${var.name} ${var.tagName}" + propagate_at_launch = true + }] + + ecs_asg_tags = "${concat(local.ecs_asg_tags_init, var.extra_tags)}" +} + resource "aws_autoscaling_group" "ecs" { name_prefix = "asg-${aws_launch_configuration.ecs.name}-" vpc_zone_identifier = ["${var.subnet_id}"] @@ -59,13 +69,7 @@ resource "aws_autoscaling_group" "ecs" { load_balancers = ["${var.load_balancers}"] enabled_metrics = ["${var.enabled_metrics}"] - tags = [{ - key = "Name" - value = "${var.name} ${var.tagName}" - propagate_at_launch = true - }] - - tags = ["${var.extra_tags}"] + tags = ["${local.ecs_asg_tags}"] lifecycle { create_before_destroy = true From 769d6c65d325def47168874bac90a600cd41aafc Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Thu, 1 Aug 2019 17:05:14 +0100 Subject: [PATCH 2/2] (Chore) terraform 0.12 syntax fixes --- consul_agent.tf | 12 ++++++------ iam.tf | 2 +- main.tf | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/consul_agent.tf b/consul_agent.tf index 5f0da1c..efd46b7 100644 --- a/consul_agent.tf +++ b/consul_agent.tf @@ -1,7 +1,7 @@ data "template_file" "consul" { template = "${file("${path.module}/templates/consul.json")}" - vars { + vars = { env = "${aws_ecs_cluster.cluster.name}" image = "${var.consul_image}" registrator_image = "${var.registrator_image}" @@ -20,7 +20,7 @@ resource "aws_ecs_task_definition" "consul" { family = "consul-agent-${aws_ecs_cluster.cluster.name}" container_definitions = "${data.template_file.consul.rendered}" network_mode = "host" - task_role_arn = "${aws_iam_role.consul_task.arn}" + task_role_arn = "${aws_iam_role.consul_task[0].arn}" volume { name = "consul-config-dir" @@ -35,11 +35,11 @@ resource "aws_ecs_task_definition" "consul" { resource "aws_cloudwatch_log_group" "consul" { count = "${var.enable_agents ? 1 : 0}" - name = "${aws_ecs_task_definition.consul.family}" + name = "${aws_ecs_task_definition.consul[0].family}" - tags { + tags = { VPC = "${data.aws_vpc.vpc.tags["Name"]}" - Application = "${aws_ecs_task_definition.consul.family}" + Application = "${aws_ecs_task_definition.consul[0].family}" } } @@ -47,7 +47,7 @@ resource "aws_ecs_service" "consul" { count = "${var.enable_agents ? 1 : 0}" name = "consul-agent-${aws_ecs_cluster.cluster.name}" cluster = "${aws_ecs_cluster.cluster.id}" - task_definition = "${aws_ecs_task_definition.consul.arn}" + task_definition = "${aws_ecs_task_definition.consul[0].arn}" desired_count = "${var.servers}" deployment_minimum_healthy_percent = "60" diff --git a/iam.tf b/iam.tf index bec1739..33075ab 100644 --- a/iam.tf +++ b/iam.tf @@ -114,6 +114,6 @@ resource "aws_iam_role" "consul_task" { resource "aws_iam_role_policy" "consul_ecs_task" { count = "${var.enable_agents ? 1 : 0}" name_prefix = "${replace(format("%.102s", replace("tf-agentTaskPol-${var.name}-", "_", "-")), "/\\s/", "-")}" - role = "${aws_iam_role.consul_task.id}" + role = "${aws_iam_role.consul_task[0].id}" policy = "${data.aws_iam_policy_document.consul_task_policy.json}" } diff --git a/main.tf b/main.tf index db866a7..7a24606 100644 --- a/main.tf +++ b/main.tf @@ -11,7 +11,7 @@ data "aws_ami" "ecs_ami" { data "template_file" "user_data" { template = "${file("${path.module}/templates/user_data.tpl")}" - vars { + vars = { additional_user_data_script = "${var.additional_user_data_script}" cluster_name = "${aws_ecs_cluster.cluster.name}" docker_storage_size = "${var.docker_storage_size}" @@ -30,7 +30,7 @@ resource "aws_launch_configuration" "ecs" { instance_type = "${var.instance_type}" key_name = "${var.key_name}" iam_instance_profile = "${aws_iam_instance_profile.ecs_profile.name}" - security_groups = ["${concat(list(aws_security_group.ecs.id), var.security_group_ids)}"] + security_groups = "${concat(list(aws_security_group.ecs.id), var.security_group_ids)}" associate_public_ip_address = "${var.associate_public_ip_address}" spot_price = "${var.spot_bid_price}" @@ -60,16 +60,16 @@ locals { resource "aws_autoscaling_group" "ecs" { name_prefix = "asg-${aws_launch_configuration.ecs.name}-" - vpc_zone_identifier = ["${var.subnet_id}"] + vpc_zone_identifier = "${var.subnet_id}" launch_configuration = "${aws_launch_configuration.ecs.name}" min_size = "${var.min_servers}" max_size = "${var.max_servers}" desired_capacity = "${var.servers}" termination_policies = ["OldestLaunchConfiguration", "ClosestToNextInstanceHour", "Default"] - load_balancers = ["${var.load_balancers}"] - enabled_metrics = ["${var.enabled_metrics}"] + load_balancers = "${var.load_balancers}" + enabled_metrics = "${var.enabled_metrics}" - tags = ["${local.ecs_asg_tags}"] + tags = "${local.ecs_asg_tags}" lifecycle { create_before_destroy = true @@ -106,7 +106,7 @@ resource "aws_security_group" "ecs" { cidr_blocks = ["0.0.0.0/0"] } - tags { + tags = { Name = "ecs-sg-${var.name}" } }