amazon-web-services - terraform 强制销毁/ad ASG,而不是依赖项更改进行更改

标签 amazon-web-services terraform

例如,要强制销毁自动缩放组并添加新的,您可以将依赖项插入到自动缩放组名称中,如以下答案所述:https://stackoverflow.com/a/39347640/1007353

但是,如果您不想更改名称,那么这将不起作用。

有没有办法在不更改名称的情况下强制销毁/添加自动缩放组?

是否有一种通用方法可以强制 terraform 销毁/添加,例如强制销毁/添加或 depends_on 的污点变体?

最佳答案

目前没有办法强制 Terraform 重新创建 ASG,除非更改其属性之一以强制创建新资源。如您所见,名称 是人们通常使用的名称。

更改名称的优点是可以使用 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}"

  # ...
}

关于amazon-web-services - terraform 强制销毁/ad ASG,而不是依赖项更改进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217228/

相关文章:

amazon-web-services - 如何在粘合作业中添加当前时间戳(额外列),以便输出数据具有额外列

amazon-web-services - DynamoDB 暂存/生产/开发版本

azure - 获取 azurerm_linux_virtual_machine_scale_set 的 IP 地址作为输出

amazon-web-services - 使用 terraform 在 route53 上获取托管域的 zone_id

terraform - 如何从另一个资源中的计数资源访问属性?

azure - 动态部署私有(private)端点

java - 如何在用 Java 编写的 AWS Lambda 中处理 SNS 消息?

amazon-web-services - AWS CloudWatch Logs 过滤器模式问题

bash - 无法在通过 Atlantis(Terraform Pull Request Automation)工具运行的 terraform local-exec 配置程序中设置环境变量

php - 如何避免在运行到Docker Container的PHP应用程序中的配置上进行硬编码的数据库凭据