terraform - terraform plan 通知基础设施的变化,但也说没有变化
问题描述
当我跑
terraform plan
它显示了由 Terraform 所做的更改列表,并且在输出结束时,它还通知“没有更改。您的基础设施与配置匹配。”:
Note: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the last "terraform apply":
# google_sql_database_instance.db1 has been changed
~ resource "google_sql_database_instance" "db1" {
id = "db1"
name = "db1"
# (12 unchanged attributes hidden)
....
whole list of objects to update
....
....
Unless you have made equivalent changes to your configuration, or ignored the relevant attributes using ignore_changes, the following plan may include actions to undo or respond to these changes.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
No changes. Your infrastructure matches the configuration.
Your configuration already matches the changes detected above. If you'd like to update the Terraform state to match, create and apply a refresh-only plan:
terraform apply -refresh-only
不知道为什么它首先说基础设施发生了变化,但又说配置与基础设施相匹配。我运行了一个测试“应用”并且 Terraform 没有改变任何东西,但我想知道为什么它会显示这两个不同的语句,并且还想确保没有任何意外更改。
解决方案
当 Terraform 创建计划时,它会为您的每个资源实例执行两个单独的操作:
- 从远程系统读取与对象关联的最新值,以确保 Terraform 考虑到您在 Terraform 之外所做的任何更改。
- 将更新后的对象与配置进行比较以查看是否存在任何差异,如果存在差异,则提出 Terraform 将采取的措施以使远程对象与配置匹配。
您共享的输出正在讨论这两个步骤。Terraform 首先报告说,当它读取最新值时,它检测到某些东西已经在 Terraform 之外发生了变化,并解释了它检测到的内容。然后,它将这些更新的对象与您的配置进行比较,发现您的配置已经匹配,因此 Terraform 不需要对您的基础架构进行任何额外的更改。
输出的最后一段包括“您的配置已经与上面检测到的更改匹配”,这表明您已经对 Terraform 之外的对象进行了一些更改,但您还更新了配置以匹配。因此,Terraform 不需要对远程对象进行任何更改以使它们与配置匹配,因为 Terraform 以外的其他东西已经更新了它们。
推荐阅读
- php - 如何迭代嵌套的 JSON 对象
- mulesoft - 无法在 Flow Designer 中运行测试
- javascript - 反应引导布局问题
- oauth-2.0 - 如何修复“E_OAUTH_STATE_MISMATCH:Oauth 状态不匹配”
- r - 如何使用顺序过滤器的结果来识别更大的组
- rust - `__self` 是一个 `&` 引用,所以它所引用的数据不能被借用为可变的
- python - 绘制分类数据时如何告诉数据着色器对 NA 值使用灰色
- php - 如何使用ajax发送到控制器?
- node.js - 使用组合查询时 Firebase Firestore 返回空数组
- c++ - 将值从一个堆栈传输到另一个堆栈,在 C++ 中保持相同的顺序