terraform - 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
]
}
解决方案
因此,关于 Terraform 的一件事是它提供了您的基础架构,但是在您最近一次应用和现在之间您的基础架构发生的任何情况都不会反映在 Terraform 状态文件中。如果您的基础架构确实发生了变化,那么您将在下一个 Terraform 计划中看到它。你所做的并没有错,只是你可能错误地理解了 Terraform。有一个简洁的概念称为“不可变基础设施”。在 Hashicorp 的博客中阅读:https ://www.hashicorp.com/resources/what-is-mutable-vs-immutable-infrastructure
推荐阅读
- android - 如何在 android 的较低 API 级别上使用 Java 8 可选功能
- postgresql - 如何将数据从 AWS Aurora Postgres DB 导出到 Redshift?
- android - 如何每 5 分钟运行 10 秒的前台服务?
- javascript - 将活动类添加到 href
- php - (Elasticsearch)如何获取所有文档的嵌套字段的最后一个元素然后执行子聚合
- python - 如何从 numpy.ndarray 中删除 nan 值
- python - 来自 argparse 的自动使用字符串(带有 nargs='*' 和带有可选复数“(s)”的元变量)的问题
- reactjs - TypeError:无法读取反应js中未定义的属性“替换”
- mysql - 需要连接两个表
- matplotlib - 在 jupyter 笔记本中并排显示 statsmodels plot_acf 和 plot_pacf