1

鉴于下面的配置,如果亚马逊推出新版本的 AMI,我对基础设施运行应用命令会发生什么?

测试实例会被销毁并重新创建吗?

所以场景

  1. 地形初始化
  2. 地形应用
  3. 等N个月
  4. 地形计划(或申请)

我是否会看到使用当时“最近”的旧版本 AMI 对 N 个月前创建的 ec2 实例进行“强制”重新创建?

data "aws_ami" "amazon-linux-2" {
 most_recent = true

 filter {
   name   = "owner-alias"
   values = ["amazon"]
 }


 filter {
   name   = "name"
   values = ["amzn2-ami-hvm*"]
 }
}


resource "aws_instance" "test" {
 depends_on = ["aws_internet_gateway.test"]


 ami                         = "${data.aws_ami.amazon-linux-2.id}"
 associate_public_ip_address = true
 iam_instance_profile        = "${aws_iam_instance_profile.test.id}"
 instance_type               = "t2.micro"
 key_name                    = "bflad-20180605"
 vpc_security_group_ids      = ["${aws_security_group.test.id}"]
 subnet_id                   = "${aws_subnet.test.id}"
}

most_recent=true 的“aws_ami”会影响未来的更新吗?

4

2 回答 2

1

是的,根据@ydaetskcoR 所说,您可以查看ignore_changes生命周期,然后它不会重新创建实例。https://www.terraform.io/docs/configuration/resources.html#ignore_changes

于 2020-05-16T02:23:19.543 回答
1

@ydeatskoR 和 @sogyals429 有正确的答案。更具体地说:

resource "aws_instance" "test" {
  # ... (all the stuff at the top)

  lifecycle {
    ignore_changes = [
      ami,
    ]
  }
}

注意:文档移至:https ://www.terraform.io/docs/language/meta-arguments/lifecycle.html#ignore_changes

于 2021-06-18T18:58:09.320 回答