例如,要强制销毁自动缩放组并添加新的,您可以将依赖关系插入到自动缩放组名称中,如此答案中所述:https://stackoverflow.com/a/39347640/1007353
但是,如果您不想更改名称,那么这将不起作用。
有没有办法强制销毁/添加自动缩放组而不更改名称?
是否有一种通用的方法可以强制使用terraform进行破坏/添加,例如depends_on
的强制目标/添加或污点变体?
答案 0 :(得分:3)
目前无法强制Terraform重新创建ASG,除非更改强制创建新资源的其中一个属性。正如您所见,name
是人们通常使用的。
更改名称的优点是可以使用create_before_destroy
生命周期模式,如下所示:
lifecycle {
create_before_destroy = true
}
在这种情况下,Terraform将首先创建新的ASG,等待它成功初始化,然后再销毁旧的ASG。如果不更改名称,这是不可能的,否则两个ASG会有相互冲突的名称。
请注意,可以避免手动指定名称的需要,而是在名称中包含在需要更换ASG时更改的内容。例如,一个常见的选择是包含AMI ID,假设这已经从变量插值填充,因此它可以同时插入到名称和AMI中:
resource "aws_launch_configuration" "example" {
name = "example-${var.ami_id}"
image_id = "${var.ami_id}"
# ...
}
resource "aws_autoscaling_group" "example" {
name = "${aws_launch_configuration.example.name}"
launch_configuration = "${aws_launch_configuration.example.name}"
# ...
}