Terraform无代码变更时重复重建AWS EC2实例问题求助
问题原因与修复方案
本次EC2实例重复重建的问题由两处配置错误导致,修复方法如下:
1. 安全组参数使用错误
VPC环境下的EC2实例指定subnet_id参数时,必须使用vpc_security_group_ids参数传递安全组ID列表,你当前使用的security_groups是EC2经典网络的遗留参数,VPC场景下使用该参数会导致Terraform本地状态与AWS云端实际返回值不匹配,每次执行terraform plan/terraform apply都会触发EC2强制重建。
2. 参数类型不匹配
associate_public_ip_address参数要求传入布尔类型值,你当前配置的是字符串"true",类型不匹配也会引发配置漂移。
修复后的EC2实例配置
将ec2.tf中的aws_instance资源修改为以下内容即可:
# Adding a test Server resource "aws_instance" "tc-amazlinux01" { ami = "ami-0e341fcaad89c3650" instance_type = "t4g.small" key_name = aws_key_pair.deployer.key_name subnet_id = aws_subnet.sub-sandbox1a.id associate_public_ip_address = true vpc_security_group_ids = [ aws_security_group.sandbox.id ] tags = { Name = "tc-amazlinux01" Terraform = "True" } }
修改完成后执行一次terraform apply更新配置,后续再次执行terraform plan/terraform apply就不会出现EC2重复重建的提示。
内容的提问来源于stack exchange,提问作者Brandon Young
相关产品推荐
相关产品推荐

