我有一个基于变量设置管理员密码的 Terraform 模块
admin_password = "${var.local_admin_password}"
Run Code Online (Sandbox Code Playgroud)
但是,var.local_admin_password
密码不再是唯一的来源。我需要将逻辑更改为以下内容:
admin_password = "${var.local_admin_password != "" ? var.local_admin_password : module.secrets.local_admin_password}"
Run Code Online (Sandbox Code Playgroud)
如果local_admin_password
提供它使用它,但如果没有提供,那么它应该从秘密模块中获取密码。
这对新资源很有用。但是将其应用于旧资源会触发敏感变量的更改,admin_password
从而触发新资源。旧资源将全部local_admin_password
提供,因此该值实际上并没有改变。
有没有办法以 Terraform 识别数据实际上相同而不触发资源更改的方式进行这种更改?
您可以尝试ignore_changes
在lifecycle
特定资源的配置块中使用。请注意,这不能在模块级别完成,而只能在每个资源上完成。
下面是如何使用它的示例,其中属性“acl”在初始资源创建后将被忽略:
resource "aws_s3_bucket" "bucket" {
name = "test-bucket"
acl = "private"
lifecycle {
ignore_changes = ["acl"]
}
}
Run Code Online (Sandbox Code Playgroud)
此行为概述如下:https://www.terraform.io/docs/configuration/resources.html#ignore_changes
归档时间: |
|
查看次数: |
536 次 |
最近记录: |