我正在使用 terraform v1.1.3,每当我运行terraform plan它时,它都会声明我已进行更改,即使本地或远程没有任何更改。例如,如果我立即运行terraform applythen terraform plan,它会声明对象已在 Terraform 之外发生更改,并强制替换我的实例。
# module.database.oci_core_instance.instance[0] has changed
~ resource "oci_core_instance" "minstance" {
+ extended_metadata = {}
id = "ocid1.instance.oc1.me-jeddah-1.anvgkljrnghkmsacizo3ubuejydotfi7qz45if32x2e3b55mhirvrvpiw7nq"
Run Code Online (Sandbox Code Playgroud)
为什么?
resource "oci_core_instance" "instance" {
availability_domain = random_shuffle.compute_ad.result[count.index % length(random_shuffle.compute_ad.result)]
compartment_id = var.compartment_id
shape = var.instance_shape
freeform_tags = var.freeform_tags
shape_config {
memory_in_gbs = 16
ocpus = 1
}
source_details {
source_type = "image"
source_id = lookup(data.oci_core_images.compute_images.images[0], "id")
}
metadata = {
ssh_authorized_keys = file(var.ssh_public_key)
user_data = data.template_cloudinit_config.nodes.rendered
}
count = var.num_nodes
depends_on = [
oci_core_volume.volume_1
]
}
Run Code Online (Sandbox Code Playgroud)
这可能是因为数据资源块在应用之前不会被评估,在计划期间它不知道里面有什么
data.template_cloudinit_config.nodes.rendered
Run Code Online (Sandbox Code Playgroud)
为了安全起见,它将其标记为更改
如果您 1000% 确定这不会改变,您可以添加
lifecycle {
ignore_changes = [
extended_metadata
]
}
Run Code Online (Sandbox Code Playgroud)
但要非常小心,如果元数据将来确实发生变化,它将根本不适用。
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |