TL;DR -- A workaround is to remove the availability_zones, since they can be derived from the vpc_zone_identifier.
There are a number of other open tickets for this problem. I'll try to link them to this one.
I've found that this error is triggered when (1) both availability_zones + vpc_zone_identifier are defined on the aws_autoscaling_group and (2) the subnets have not been created before the first diff is created (i.e. on a previous plan+apply.) It seems that the DiffSuppressFunc does not exclude the availability zones on the first diff but does on the second.
Take a look at this diff, from a run which failed:
+ module.PLACEHOLDER.aws_autoscaling_group.PLACEHOLDER
id: <computed>
arn: <computed>
availability_zones.#: "3"
availability_zones.2050015877: "us-east-2c"
availability_zones.221770259: "us-east-2b"
availability_zones.2487133097: "us-east-2a"
default_cooldown: <computed>
desired_capacity: <computed>
force_delete: "true"
health_check_grace_period: "300"
health_check_type: "ELB"
launch_configuration: "${aws_launch_configuration.PLACEHOLDER.name}"
load_balancers.#: <computed>
max_size: "10"
metrics_granularity: "1Minute"
min_size: "2"
name: "PLACEHOLDER"
protect_from_scale_in: "false"
target_group_arns.#: <computed>
vpc_zone_identifier.#: <computed>
wait_for_capacity_timeout: "10m"
This generated an error similar to those in other posts. See how availability zones are there? That means the suppression function didn't trigger. Reformatting the output of the error message gives a second diff that would look like this:
+ module.PLACEHOLDER.aws_autoscaling_group.PLACEHOLDER
id: <computed>
arn: <computed>
default_cooldown: <computed>
desired_capacity: <computed>
force_delete: "true"
health_check_grace_period: "300"
health_check_type: "ELB"
launch_configuration: "PLACEHOLDER"
load_balancers.#: <computed>
max_size: "10"
metrics_granularity: "1Minute"
min_size: "2"
name: "PLACEHOLDER"
protect_from_scale_in: "false"
target_group_arns.#: "1"
target_group_arns.1448049111: "arn:aws:elasticloadbalancing:us-east-2:XXXXXXXXXXXX:targetgroup/PLACEHOLDER"
vpc_zone_identifier.#: "3"
vpc_zone_identifier.3052043955: "subnet-00000000"
vpc_zone_identifier.4169375209: "subnet-00000000"
vpc_zone_identifier.793689210: "subnet-00000000"
wait_for_capacity_timeout: "10m"
Note the absence of AZs and the presence of subnet identifiers. That second diff didn't actually come from the first run, it was output by a second run immediately after the failure. Commenting out the ASG resource and creating in on a second run will generate the same output.
Since the DiffSuppressFunc is necessary for EC2-Classic, we can't just throw it out. I don't know, though, how to fix it for interpolated subnets in the same plan.
I do not have availability_zones (I already use vpc_zone_identifier) and I have the same issue. Multiple applies do not work.
Mismatch is not just for availability_zones as the ticket I came here from by your reference. The error from that ticket and mine is (aws_autoscaling_group):
aws_autoscaling_group.web-server-autoscaling: aws_autoscaling_group.web-server-autoscaling: diffs didn't match during apply. This is a bug with Terraform and should be reported as a GitHub Issue.
Not sure if that's the same issue so commenting on this ticket too.
Bump as I hit a similar bug today:
* module.my_asg.aws_autoscaling_group.asg: aws_autoscaling_group.asg: diffs didn't match during apply. This is a bug with Terraform and should be reported as a GitHub Issue.
Please include the following information in your report:
Terraform Version: 0.10.7
Resource ID: aws_autoscaling_group.asg
Mismatch reason: attribute mismatch: availability_zones.1252502072
Diff One (usually from plan): *terraform.InstanceDiff{mu:sync.Mutex{state:0, sema:0x0}, Attributes:map[string]*terraform.ResourceAttrDiff{"availability_zones.3569565595":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1a", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.#":*terraform.ResourceAttrDiff{Old:"", New:"4", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.value":*terraform.ResourceAttrDiff{Old:"", New:"my", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.1305112097":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1b", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.1252502072":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1f", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "max_size":*terraform.ResourceAttrDiff{Old:"", New:"10", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.2762590996":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1d", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "health_check_grace_period":*terraform.ResourceAttrDiff{Old:"", New:"300", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1329607670.value":*terraform.ResourceAttrDiff{Old:"", New:"my-aws1", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1329607670.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "metrics_granularity":*terraform.ResourceAttrDiff{Old:"", New:"1Minute", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "min_size":*terraform.ResourceAttrDiff{Old:"", New:"2", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "health_check_type":*terraform.ResourceAttrDiff{Old:"", New:"EC2", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "wait_for_capacity_timeout":*terraform.ResourceAttrDiff{Old:"", New:"10m", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.2454304594.key":*terraform.ResourceAttrDiff{Old:"", New:"node-type", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "default_cooldown":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "load_balancers.1882356129":*terraform.ResourceAttrDiff{Old:"", New:"my-deployment", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "vpc_zone_identifier.#":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.key":*terraform.ResourceAttrDiff{Old:"", New:"Name", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.2454304594.value":*terraform.ResourceAttrDiff{Old:"", New:"manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "name":*terraform.ResourceAttrDiff{Old:"", New:"my-Manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:true, Sensitive:false, Type:0x0}, "tag.2454304594.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "target_group_arns.#":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "desired_capacity":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.3551460226":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1e", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.value":*terraform.ResourceAttrDiff{Old:"", New:"my-Manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "protect_from_scale_in":*terraform.ResourceAttrDiff{Old:"", New:"false", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1329607670.key":*terraform.ResourceAttrDiff{Old:"", New:"MY_AWS_VERSION", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "force_delete":*terraform.ResourceAttrDiff{Old:"", New:"false", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.986537655":*terraform.ResourceAttrDiff{Old:"", New:"us-east-1c", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.key":*terraform.ResourceAttrDiff{Old:"", New:"DOCKER_VERSION", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "arn":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "load_balancers.#":*terraform.ResourceAttrDiff{Old:"", New:"1", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "launch_configuration":*terraform.ResourceAttrDiff{Old:"", New:"${var.launch_config}", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "availability_zones.#":*terraform.ResourceAttrDiff{Old:"", New:"6", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}}, Destroy:false, DestroyDeposed:false, DestroyTainted:false, Meta:map[string]interface {}(nil)}
Diff Two (usually from apply): *terraform.InstanceDiff{mu:sync.Mutex{state:0, sema:0x0}, Attributes:map[string]*terraform.ResourceAttrDiff{"tag.1329607670.value":*terraform.ResourceAttrDiff{Old:"", New:"my-aws1", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "vpc_zone_identifier.1352725841":*terraform.ResourceAttrDiff{Old:"", New:"subnet-d28f2cfd", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "force_delete":*terraform.ResourceAttrDiff{Old:"", New:"false", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.2454304594.value":*terraform.ResourceAttrDiff{Old:"", New:"manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "protect_from_scale_in":*terraform.ResourceAttrDiff{Old:"", New:"false", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "metrics_granularity":*terraform.ResourceAttrDiff{Old:"", New:"1Minute", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "default_cooldown":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "load_balancers.1882356129":*terraform.ResourceAttrDiff{Old:"", New:"my-deployment", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.2454304594.key":*terraform.ResourceAttrDiff{Old:"", New:"node-type", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "wait_for_capacity_timeout":*terraform.ResourceAttrDiff{Old:"", New:"10m", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.2454304594.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "max_size":*terraform.ResourceAttrDiff{Old:"", New:"10", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "health_check_type":*terraform.ResourceAttrDiff{Old:"", New:"EC2", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "health_check_grace_period":*terraform.ResourceAttrDiff{Old:"", New:"300", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "min_size":*terraform.ResourceAttrDiff{Old:"", New:"2", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "vpc_zone_identifier.#":*terraform.ResourceAttrDiff{Old:"", New:"1", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1329607670.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.key":*terraform.ResourceAttrDiff{Old:"", New:"Name", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "launch_configuration":*terraform.ResourceAttrDiff{Old:"", New:"my-manager-20171205004720418400000002", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.value":*terraform.ResourceAttrDiff{Old:"", New:"my", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.key":*terraform.ResourceAttrDiff{Old:"", New:"DOCKER_VERSION", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1722550134.propagate_at_launch":*terraform.ResourceAttrDiff{Old:"", New:"true", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "desired_capacity":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.#":*terraform.ResourceAttrDiff{Old:"", New:"4", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "load_balancers.#":*terraform.ResourceAttrDiff{Old:"", New:"1", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.611801112.value":*terraform.ResourceAttrDiff{Old:"", New:"my-Manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "target_group_arns.#":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "tag.1329607670.key":*terraform.ResourceAttrDiff{Old:"", New:"MY_AWS_VERSION", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "arn":*terraform.ResourceAttrDiff{Old:"", New:"", NewComputed:true, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:false, Sensitive:false, Type:0x0}, "name":*terraform.ResourceAttrDiff{Old:"", New:"my-Manager", NewComputed:false, NewRemoved:false, NewExtra:interface {}(nil), RequiresNew:true, Sensitive:false, Type:0x0}}, Destroy:false, DestroyDeposed:false, DestroyTainted:false, Meta:map[string]interface {}(nil)}
I think I hit the same things as well (see hashicorp/terraform#16632).
I'm using https://github.com/segmentio/stack as a base, and haven't yet had any luck getting @andrewschleifer's workaround to work, since stack does lots of (very handy!) automagical config for you.
This issue was automatically closed by the documentation update in #3897. The configuration fix for diffs didn't match during apply and Mismatch reason: attribute mismatch: availability_zones.XXXXXX is to remove availability_zones configuration if vpc_zone_identifier is also specified. If you must specify availability_zones due to being used in a module that works with both EC2-Classic and VPC, availability_zones can be set to [] (an empty list).
Just bumped into this, and your comment resolved my issue. thanks, @bflad
I'm going to lock this issue because it has been closed for _30 days_ โณ. This helps our maintainers find and focus on the active issues.
If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!
Most helpful comment
This issue was automatically closed by the documentation update in #3897. The configuration fix for
diffs didn't match during applyandMismatch reason: attribute mismatch: availability_zones.XXXXXXis to removeavailability_zonesconfiguration ifvpc_zone_identifieris also specified. If you must specifyavailability_zonesdue to being used in a module that works with both EC2-Classic and VPC,availability_zonescan be set to[](an empty list).