最近将我的 Terraform 项目升级到 AWS 提供商 3.74.0 和 TF 1.1.4(从更旧的版本)。
我突然收到此自动缩放计划报告外部更改:
resource "aws_autoscaling_schedule" "api-svc-tst-down-schedule" {
scheduled_action_name = "api-svc-tst-down-schedule"
min_size = 0
max_size = 1
desired_capacity = 0
// Minute Hour DayOfMonth Month DayOfWeek
recurrence = "0 13 * * *"
autoscaling_group_name = aws_autoscaling_group.api-svc-tst-asg.name
lifecycle {
ignore_changes = [start_time]
}
}
Run Code Online (Sandbox Code Playgroud)
该plan命令现在报告:
Note: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the
last "terraform apply":
# aws_autoscaling_schedule.api-svc-tst-down-schedule has changed
~ resource "aws_autoscaling_schedule" "api-svc-tst-down-schedule" {
id = "api-svc-tst-down-schedule"
~ start_time = "2022-01-31T13:00:00Z" -> "2022-02-01T13:00:00Z"
# (7 unchanged attributes hidden)
}
Run Code Online (Sandbox Code Playgroud)
如果我按apply计划进行,那么 TF 似乎不会更改 ASG(我假设它只是更新其状态文件),并且通知会一直消失到第二天。
我注意到 AWS 控制台确实显示Scheduled action有一个Start time,这似乎是由 AWS 设置的。
我尝试添加start_time,ignored_changes但似乎没有什么区别,仍然报告为外部更改。
这是 Terraform 的已知问题吗(我没有通过谷歌搜索看到任何内容)?
如何防止 TF 被标记为外部更改?
编辑start_time:我还尝试按照评论中的建议设置属性。但第二天又出现了检测到的更改警告。
编辑 2:我还尝试通过 Terraform 删除并重新添加资源,但第二天它仍然被标记为已更改。
这种不良行为是 Terraform版本 0.15.4中引入的有意更改。
目前无法避免。唯一的解决方法是所有团队成员(和工具)必须接受教育以忽略“预期偏差”。
请注意,这种“预期偏差”行为不仅限于aws_autoscaling_schedule资源,甚至不仅仅限于 AWS 提供商。对于云供应商在创建资源后更新属性的任何资源,许多不同的平台/类型都会发生此问题。
apply许多资源在创建后会立即报告偏差 - 通常您可以通过立即执行或来更新 TF 状态来摆脱该报告refresh,并且只要 AWS 不对这些属性进行更改,您就不会看到报告的资源又变了。
其他资源属性(如aws_autoscaling_schedule.start_time)由云供应商定期更新。每当您运行plan.
有一个锁定的未解决问题需要跟踪:https://github.com/hashicorp/terraform/issues/28803。
请注意,该问题已被锁定,因为 Hashicorp 厌倦了人们告诉他们这对他们的团队有多么负面的影响。
| 归档时间: |
|
| 查看次数: |
7229 次 |
| 最近记录: |