gpt4 book ai didi

amazon-ec2 - 新 AMI 发布时 Terraform 重新创建的 EC2 实例

转载 作者:行者123 更新时间:2023-12-03 23:28:20 26 4
gpt4 key购买 nike

我已经编写了一些 Terraform 代码来创建一些服务器。对于 AMI,我使用 Terraform 数据模块来获取最新的 Ubuntu 16.04 镜像 ID 并将其分配给 EC2 实例。

最近我想在这个环境中添加另一个 EC2 实例,但是当我运行 terraform plan 时我可以看到 Terraform 正在尝试删除现有的 EC2 实例并重新创建它们。原因是新的 Ubuntu 镜像已发布,它正在尝试删除旧实例并使用新的 AMI ID 创建新实例。

由于我不想意外删除我们的生产服务器,我是否有机会解决这个问题?

data "aws_ami" "ubuntu" {
most_recent = true

filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"]
}

filter {
name = "virtualization-type"
values = ["hvm"]
}
}

module "jenkins" {
source = "terraform-aws-modules/ec2-instance/aws"

name = "Jenkins"
instance_count = 1

ami = "${data.aws_ami.ubuntu.id}"
instance_type = "t2.small"
associate_public_ip_address = true
disable_api_termination = true
key_name = "${aws_key_pair.ssh_key.key_name}"
monitoring = false
vpc_security_group_ids = "${module.jenkins_http_sg.this_security_group_id}", "${module.jenkins_https_sg.this_security_group_id}", "${module.ssh_sg.this_security_group_id}"]
subnet_id = "${module.vpc.public_subnets[0]}"
iam_instance_profile = "${aws_iam_instance_profile.update-dns-profile.name}"

tags = {
Terraform = "true"
}
}

最佳答案

虽然上面的答案有帮助,但我通过将以下内容添加到 aws_instance 资源来解决问题。

lifecycle {
ignore_changes = ["ami"]
}

请注意,如果您像我一样使用 AWS 模块,则必须将此代码输入到 .terraform/modules/中的 main.tf 文件中。

关于amazon-ec2 - 新 AMI 发布时 Terraform 重新创建的 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com