Loading...
Loading...
### Terraform Version ```shell % terraform version Terraform v1.4.6 on darwin_arm64 + provider registry.terraform.io/fastly/fastly v3.2.0 + provider registry.terraform.io/hashicorp/null v3.2.1 + provider registry.terraform.io/signalsciences/sigsci v1.2.14 ``` ### Terraform Configuration Files ```terraform resource "fastly_service_vcl" "this" { name = var.name stale_if_error = true http3 = true default_ttl = var.default_ttl product_enablement { brotli_compression = false domain_inspector = false image_optimizer = false origin_inspector = false websockets = false } # This is a hack to prevent the default Fastly VCL from setting the request's backend # after the logic in our "Select Origin" snippet. condition { name = "Origin Request Condition" statement = "false" type = "REQUEST" } dynamic "backend" { for_each = [for origin in var.origins : { name = format("origin_%s", substr(lower(origin.region), 0, 2)), address = origin.host, port = origin.port, ssl_cert_hostname = origin.tls_cert_hostname, ssl_sni_hostname = origin.tls_sni_hostname, override_host = origin.host_header != null ? origin.host_header : origin.host, healthcheck = format("health_check_%s", substr(lower(origin.region), 0, 2)), shield = origin.shield, }] content { name = backend.value.name address = backend.value.address override_host = backend.value.override_host port = backend.value.port ssl_check_cert = true ssl_cert_hostname = backend.value.ssl_cert_hostname != null ? backend.value.ssl_cert_hostname : backend.value.override_host ssl_sni_hostname = backend.value.ssl_sni_hostname != null ? backend.value.ssl_sni_hostname : backend.value.override_host use_ssl = true healthcheck = backend.value.healthcheck request_condition = "Origin Request Condition" shield = backend.value.shield } } dynamic "healthcheck" { for_each = [for origin in var.origins : { name = format("health_check_%s", substr(lower(origin.region), 0, 2)), host = origin.host_header != null ? origin.host_header : origin.host, path = origin.health_check_path, timeout = origin.health_check_timeout, check_interval = origin.health_check_interval, method = origin.health_check_method, }] content { host = healthcheck.value.host name = healthcheck.value.name path = healthcheck.value.path timeout = healthcheck.value.timeout check_interval = healthcheck.value.check_interval method = healthcheck.value.method } } dynamic "domain" { for_each = var.domains content { name = domain.value } } ``` ### Debug Output N/A ### Expected Behavior ```console % terraform plan Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.example.fastly_service_vcl.this will be created + resource "fastly_service_vcl" "this" { + activate = true + active_version = (known after apply) + cloned_version = (known after apply) + default_ttl = 0 + force_refresh = (known after apply) + http3 = true + id = (known after apply) + imported = (known after apply) + name = "example.com" + stale_if_error = true + stale_if_error_ttl = 43200 + backend { + address = "example.com" + auto_loadbalance = false + between_bytes_timeout = 10000 + connect_timeout = 1000 + error_threshold = 0 + first_byte_timeout = 15000 + healthcheck = "health_check_eu" + max_conn = 200 + name = "origin_eu" + override_host = "example.com" + port = 443 + request_condition = "Origin Request Condition" + ssl_cert_hostname = "example.com" + ssl_check_cert = true + ssl_sni_hostname = "example.com" + use_ssl = true + weight = 100 } ``` ### Actual Behavior ```console % terraform plan Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.example.fastly_service_vcl.this will be created + resource "fastly_service_vcl" "this" { + activate = true + active_version = (known after apply) + cloned_version = (known after apply) + default_ttl = 0 + force_refresh = (known after apply) + http3 = true + id = (known after apply) + imported = (known after apply) + name = "example.com" + stale_if_error = true + stale_if_error_ttl = 43200 + backend { # At least one attribute in this block is (or was) sensitive, # so its contents will not be displayed. } ``` ### Steps to Reproduce 1. `terraform init` 2. `terraform plan` ### Additional Context The expected behaviour is what we get from Terraform 1.3.9. Looks like this relates to the changes around the plan output in 1.4. Only other difference besides version I can think of is that we set `TF_IN_AUTOMATION=1` and `TF_INPUT=0` in CI. ### References _No response_
Click on a version to see all relevant bugs
Terraform Integration
Learn more about where this data comes from
Bug Scrub Advisor
Streamline upgrades with automated vendor bug scrubs
BugZero Enterprise
Wish you caught this bug sooner? Get proactive today.