首页 > 解决方案 > terraform:ec2 机器更改不会触发 dns 更改

问题描述

我有许多 EC2 机器设置的简单代码。更改机器后不会更新 DNS 记录。我需要第二次运行它 - 只有这样 DNS 才会改变。我究竟做错了什么?

resource "aws_instance" "ec2" {
  for_each          = var.instances

  ami               = each.value.ami
  instance_type     = each.value.type
  ebs_optimized     = true
}

resource "cloudflare_record" "web" {
  for_each = var.instances

  zone_id  = var.cf_zone_id
  name     = "${each.key}.${var.env}.aws.${var.domain}."
  value    = aws_instance.ec2[each.key].public_ip
  type     = "A"
  ttl      = 1

  depends_on = [
    aws_instance.ec2
  ]
}

标签: terraformterraform-provider-awsterraform-provider-cloudflare

解决方案


因此,关于 Terraform 的一件事是它提供了您的基础架构,但是在您最近一次应用和现在之间您的基础架构发生的任何情况都不会反映在 Terraform 状态文件中。如果您的基础架构确实发生了变化,那么您将在下一个 Terraform 计划中看到它。你所做的并没有错,只是你可能错误地理解了 Terraform。有一个简洁的概念称为“不可变基础设施”。在 Hashicorp 的博客中阅读:https ://www.hashicorp.com/resources/what-is-mutable-vs-immutable-infrastructure


推荐阅读