Terraform EC2用户数据更改不取代EC2



我最近注意到Terraform或AWS对EC2用户数据进行了更改,这样更改就不会触发Terraform中的"替换"。引用Terraform aws_instance docs:对此字段的更新将触发EC2实例的停止/启动

我们的自动化部署依赖于用户数据的更改来触发替换,因此每次都会运行新的用户数据。

有没有一种方法可以告诉Terraform在注意到新的用户数据时替换实例?Lambda也有类似的问题,可以通过"source_code_hash"解决这里有类似的东西我可以用吗?

谢谢。

好消息是,terraform提供商aws有一个公开的问题通知单,许多人都在报告这个问题。已经报告了依赖user_data对其EC2实例发起替换的个人的反馈。这包括现在已断开的CI/CD管道。

jaredholgate提到他们计划添加一个名为user_data_replace_on_change的参数,默认情况下为false。

同时,您可以使用-replaceflag来针对您的ec2实例。例如:

terraform plan -replace aws_instance.my_ec2_instance
terraform apply -replace aws_instance.my_ec2_instance

出于引用目的,本期报道于:https://github.com/hashicorp/terraform-provider-aws/issues/23315

更改来自新的Terraform AWS提供商版本

如果您使用cloudinit运行userdata,一个简单的解决方案是使用cloudinit类型x-shellscript-per-boot而不是x-shellscript。

这意味着任何用户数据更新都将在每次停止/启动时运行。

相关内容

  • 没有找到相关文章

最新更新