Terraform 1.17 explained: what's new, who it touches and how we'd upgrade
Terraform 1.17.0 is out. It's a small upgrade for most teams, with variables in provider requirements, a faster -minimal-refresh plan that can hide drift, and Terraform Policy GA in the CLI. What it means, who does what, and how to roll back if the upgrade goes wrong.
part 3 of 38 · Platform releases, explained from scratchthe ideaSmall release, faster plans, one catch: the fast plan can miss drift.
after reading, you can- Sort the 1.17 changes into ones that touch your pipelines and ones that can wait. Then plan around the first lot.
- Spot when -minimal-refresh is safe and when it'll hide drift you need to see
- Set up an upgrade to 1.17 that checks pins, parsers and certificate paths first
Terraform 1.17.0 came out on October 21, 2026. It's a small, safe upgrade for most teams, but test it in a lower environment first, and don't let the new fast-plan option be the last check before a production change. If your business runs on cloud infrastructure that someone manages with Terraform, this post tells you what to ask them.
Terraform builds your cloud from written files, and 1.17 changes how a plan gets checked
Most companies no longer click through a cloud console to set up servers, networks and databases. An engineer writes down what should exist in text files, and Terraform makes the cloud match. Before it changes anything, Terraform asks every cloud service what's really there and shows a preview. Version 1.17 lets teams skip part of that check to get the preview faster. It also lets one set of files point at different private plugin stores, and it makes rule checks (policy) a normal feature of the tool. Nothing here is urgent for security, but a careless upgrade can still break the pipelines that change your production systems.
Think of a builder working from blueprints. Before each job, a careful builder walks the whole site to see what's changed since the last visit. The new option lets the builder check only the rooms on today's job list. That's faster, but if someone knocked down a wall in another room, nobody notices until it matters.
- Companies whose cloud is built with Terraform
- Platform and DevOps teams
- Teams on HCP Terraform or Enterprise
- Security and compliance owners
- Agencies running infrastructure for clients
- Engineers write down the infrastructure they want in HCL, HashiCorp's configuration format. Those files go through code review like any other code.
- Providers are plugins that talk to each service's API, like AWS, Azure, Snowflake or Okta. Terraform downloads them at init, so a broken registry stops everything.
- A state file records what Terraform already manages. Lose it or corrupt it, and Terraform no longer knows what it built.
- terraform plan previews a change, and terraform apply makes it. Most teams have someone read the plan in a pull request before anyone applies it.
- IBM has owned HashiCorp since February 2025. Terraform moved to the BSL licence in August 2023, which your lawyers care about more than your pipelines do.
Why it matters to you
For a business owner, the risk sits in the pipeline that changes production. If an upgrade goes badly, deployments stop or a preview misses a change someone made by hand, and the next apply quietly overwrites it. Neither is dramatic, but both cost a day of engineering time and can leave a security setting different from what your auditors were told.
There's no attack to worry about in the 1.17 release itself. It's a 1.x minor release that keeps HashiCorp's compatibility promises, so most teams can move when it suits them. The one change that can break things on day one is the Go 1.26.10 certificate update, which also arrived in 1.16.7. If your private registry or proxy uses a certificate chain HashiCorp's new build stops trusting, both versions will fail to connect.
Most of what's in 1.17 helps platform teams that run Terraform for other teams. If you write a few modules for one account, you can take this release at your own pace.
- Platform teams with one codebase and several private registries or organizations: set the provider source per environment and stop copying terraform blocks or patching them with scripts.
- Teams whose large states run into provider rate limits get a supported halfway house between a full refresh and -refresh=false when they just want a quick plan.
- If you write guardrails, you can run HCL policies from the Terraform CLI in CI now. Policies see a replacement as a create and a delete.
- Anyone wrapping the CLI in scripts gets versioned JSON from terraform version, which makes it easier to notice when the format changes later.
- Teams staying on 1.16 for now still get the Go 1.26.10 certificate change through 1.16.7.
If you run self-managed Terraform Enterprise or a shared terraform-mcp-server, check the two bulletins above first. They matter more than anything in the 1.17 changelog.
-
01 An engineer edits the files
An engineer edits the files and opens a pull request. On 1.17 the provider address can come from a constant variable, so dev and prod stop needing separate copies.
-
02 terraform init installs plugins
terraform init reads the provider list and downloads each plugin. init's log messages now include provider versions, which helps when an install fails.
-
03 Plan checks what's real
Normally the plan asks the cloud about every resource. With -minimal-refresh it only asks about the ones you're changing, and drift elsewhere stays hidden.
-
04 Policy checks the preview
Rules written as Terraform Policy can now run with -policies in a normal build. A replaced resource reaches them as a separate create and delete.
-
05 Apply changes the cloud
Apply makes the change and updates the state file. That last step is the same as in 1.16, so a full-refresh plan before production still protects you.
What changed
Not much to read this time: three new features, three enhancements, seven bug fixes and two notes. Tags are HashiCorp's, except the notes, which we marked changed.
Terraform 1.17.0 at a glance
You can now take the source and version in required_providers from constant input variables and locals. Same rules as 1.15's dynamic module sources: nothing may depend on plan results.
Refreshes only the resource instances Terraform plans to change, so plans on big states make fewer API calls. Drift on unchanged resources goes unseen.
The -policies flag for plan, apply and query no longer needs an experimental build or -allow-experimental-features. Query policies check resources that list blocks discover.
Log lines from terraform init now name the provider versions. Handy when you're working out why an install failed.
terraform test's mock_provider can now fake ephemeral resources, so a test of a module that uses them can run on mocks.
Terraform used to drop warnings and errors from ephemeral resource renewals. It shows them now, so a few new warnings may turn up.
No more panics from log and pow when the result isn't a number. They also error out now on plus or minus infinity, which nothing downstream could use anyway.
There's a format_version field in terraform version -json now. If your tooling ignores unknown fields you're fine, but watch the field in later releases.
Provider requirements can now use variables, within limits. This builds on 1.15 (April 29, 2026), where module source and version started reading variables marked const = true and locals built from them. Now required_providers can too. Don't be thrown by HashiCorp's reference page for the terraform block, which still says it won't take input variables. The pull request's example uses an organization variable inside a private registry address and keeps the version in a local. Set the values with -var, a var file or environment variables.
This is useful if one codebase runs against more than one private registry or organization. Until now, teams in that position kept near-identical copies of the terraform block, or rewrote it with scripts before init. One limit doesn't move. The value has to be known before planning starts, so it can't come from a resource or a data source. Terraform 1.15 rejects that case at init for module sources with an "Invalid module source" error, and provider sources follow the same constraints.
A faster plan for big states, if you accept the trade-off. Normally a plan refreshes every resource it manages before doing anything else, which costs at least one read call each. On a state with thousands of resources, that's the slow part, and it's also when providers start rate limiting. Issue 35290 asked for a fix back in 2024, from someone who found -refresh=false too risky. -minimal-refresh has Terraform compare configuration with the prior state first. Instances with no planned change skip the refreshdefinitionBefore planning, Terraform asks each API what really exists and updates state to match. That's the refresh, and on big states it's the slow part., and the ones with changes are refreshed and planned again. Each one decides for itself, so refreshing one resource doesn't pull in the ones that depend on it.
The documentation is frank about the cost. Like -refresh=false, it ignores changes made outside Terraform to anything you didn't touch, so the plan can be incomplete or wrong. You can't combine it with refresh-only mode or with -refresh=false. HashiCorp also says to avoid it when you upgrade provider versions, so Terraform can write schema changes into state. We'd use it for fast feedback on pull requests and keep a full-refresh plan in front of every production apply.
Terraform Policy is out of experimental status in the CLI. For anyone who hasn't tried it, it's HashiCorp's HCL-based policy as code: .policy.hcl files with provider, resource and module blocks. HCP Terraform can evaluate them at setup time, before providers or modules download, at plan time and after apply, when IDs and ARNs exist. Enforcement is Advisory, Mandatory_overridable or Mandatory. Sentinel and Open Policy Agent haven't gone away.
From 1.17, -policies works on plan, apply and query in a normal build. Query policies check what your list blocks find and report as text or JSON. Before you call it production-ready, though, look at the docs too. HashiCorp's Terraform PolicydefinitionHashiCorp's policy as code, written in HCL and kept in .policy.hcl files. Someone writes a rule like no public storage buckets, and a plan that breaks a mandatory rule gets stopped before anything changes. docs (v0.5.x) still said "this functionality is in beta" when we checked on October 22, 2026. Easy to miss: the pull request the GA entry links to changes how policies see a replacement. It now arrives as a separate create and delete, each with its own attribute values. It used to be one update.
Smaller changes that can still show up in your pipeline. Two fixes could change output you're used to. Diagnostics from renewing ephemeral resources now appear, and HashiCorp doesn't expect that to break anything. log and pow now fail instead of returning infinity. If a wrapper parses terraform version -json, check that it tolerates the new format_version field. And if anything in your build trusts certificates through the compromised eMudhra intermediates, the Go 1.26.10 change in 1.17.0 and 1.16.7 will make those connections fail.
A quick sense of pace: a minor release every few months, a patch to the current one most weeks. Here's 1.17 next to the two before it, headline items only. The changelogs have everything else.
| Item | 1.15 | 1.16 | 1.17 |
|---|---|---|---|
| Released | April 29, 2026 | August 26, 2026 | October 21, 2026 |
| Latest patch (Oct 22, 2026) | 1.15.9 (August 19, 2026) | 1.16.7 (October 22, 2026) | 1.17.0 |
| Dynamic sources from const values | Module source and version from const variables and locals | No change in the changelog | Provider source and version from const variables and locals |
| Import | No headline change | import blocks work inside modules | No headline change |
| Refresh and planning | No headline change | No headline change | -minimal-refresh option |
| Policy | No mention in the changelog | HCP Terraform policy summaries in the CLI; plugin credentials from the backend | Terraform Policy GA for -policies on plan, apply and query |
| Lifecycle and actions | No headline change | lifecycle destroy = false; on_failure modes halt, taint, continue | No headline change |
| Platforms, output and syntax | Windows ARM64 builds; deprecated attribute on variables and outputs | Linux s390x builds; graph -format=mermaid; state show -json | format_version in version JSON |
| Upgrade notes | S3 backend FIPS and dual-stack env vars accept only true or false | Provisioners now apply bastion_host_key; check it | None listed; upgrade guide cites the 1.x promises |
How long will 1.16 be supported? Nobody has published a date we can point you to. What we can see is that 1.16 is still getting patches: 1.16.7 arrived the day after 1.17.0. The support-period article now redirects to IBM's support portal, which didn't load for us without a sign-in, and the public 1.x compatibility promise only says the series gets at least 18 months of maintenance after 1.0. If you need a date for an audit or a contract, ask HashiCorp support.
A year of Terraform releases and advisories
- Nov 19, 2025Terraform 1.14.0
Terraform gained list resources and the terraform query command, plus the actions block. You'll need query if you want 1.17's query policies.
- Apr 29, 2026Terraform 1.15.0
Const variables in module sources came first, and 1.17 extends the idea to providers. Windows ARM64 builds and the convert function arrived too.
- Jul 6, 2026HCSEC-2026-17 (Terraform Enterprise)
Module publishers could pull arbitrary files through VCS ingestion. Patch to 2.0.4 or 1.2.4.
- Jul 28, 2026HCSEC-2026-23 (terraform-mcp-server)
Three CVEs in the HTTP transport. Fixed in 1.1.0.
- Aug 26, 2026Terraform 1.16.0
Teams could finally put import blocks inside modules. The terraform_data store block and destroy = false came with it.
- Sep 9, 20261.17.0-beta1
- Oct 7, 20261.17.0-rc1
rc2 followed on October 14.
- Oct 21, 2026Terraform 1.17.0
- Oct 22, 2026Terraform 1.16.7
Go 1.26.10 for 1.16 users who aren't moving yet.
And two advisories from this summer. Neither is in the Terraform CLI. If you run self-managed Terraform Enterprise, read HCSEC-2026-17: a user who can publish a registry module from a VCS repository could pull files from outside it into the module and download them. It hits v202506-1, v202507-1 and 1.0.0 through 2.0.3, with fixes in 2.0.4 and 1.2.4. If you run terraform-mcp-server, HashiCorp's MCP server for AI tools, read HCSEC-2026-23. Versions 0.2.1 through 1.0.0 had three HTTP transport flaws, one of which could send the server's bearer token to an attacker's endpoint. 1.1.0 fixes them; stdio-only setups were safe.
Nothing about Terraform's overall shape changes in 1.17: configuration, the CLI or a remote runner, providers, state, and the APIs at the end. A few decisions move. Init can work out a provider's address from variables, a plan can skip refreshing what you didn't touch, and you don't need an experimental build to run policy from the Terraform CLI. We've used HashiCorp's own component names in the diagrams and simplified the rest.
Before: a Terraform 1.16 run
Under 1.16 you hard-code the provider address, every plan refreshes every managed resource, and -policies only works in an experimental build.
After: a Terraform 1.17 run
In 1.17 provider addresses can come from const variables and locals, -minimal-refresh limits refresh to changed resources, and -policies works in a normal build.
- Provider source and version are hard-coded in each terraform block, so teams copy the block per registry
- Every plan refreshes every managed resource, so you either wait for it or turn refresh off entirely
- Running -policies locally means an experimental build and an extra flag
- Policies see a replaced resource as one update, so they can't tell it apart from an edit
- terraform version -json has no format_version field
- Provider source and version can come from const variables and locals, so one codebase serves several registries
- -minimal-refresh refreshes only the instances you're changing, which saves API calls but misses drift elsewhere
- -policies works on plan, apply and query in a normal build
- Policies now get a replacement as two events, a create and a delete, so rules written for updates need a look
- terraform version -json includes format_version
What to do now
What to do now, by who you are
- Ask your platform team or provider which Terraform version runs your pipelines, and when they plan to move to 1.17.
- Ask whether production changes still get a full-refresh plan first. If the answer is no, someone should explain why in writing.
- If you need a support end date for 1.16 for an audit or a contract, have the team ask HashiCorp support. We couldn't find a public date.
- List the Terraform version on every pipeline, runner and laptop, and every required_version pin that would block 1.17.
- Test connections to your private registry, proxy and backend on 1.16.7 or 1.17.0. The Go 1.26.10 certificate change hits both.
- Widen the pin on a test branch, then run 1.16 and 1.17 plans side by side on a lower environment with full refresh. The proposed changes should match.
- Find every script that reads terraform version -json and check it ignores unknown fields like format_version.
- Look for log or pow calls that could hit infinity. Those now error out instead of passing a useless value along.
- Keep provider upgrades in their own change, planned without -minimal-refresh, so schema changes reach state.
- Pilot Terraform Policy beside your Sentinel or OPA rules. The policy docs still said beta on October 22, 2026, so keep the old rules in force.
- Update any policy that treats a replacement as an update. In 1.17 it arrives as a separate create and delete.
- Check that Terraform Enterprise and terraform-mcp-server have the HCSEC-2026-17 and HCSEC-2026-23 fixes. If you run them, they matter more than anything in 1.17.
$ terraform version Terraform v1.16.7 on linux_amd64 $ grep -rn "required_version" --include="*.tf" . ./envs/prod/versions.tf:2: required_version = "~> 1.16.0" # ~> 1.16.0 blocks 1.17. Widen it on a test branch, compare plans, then merge.
Don't expect much from the upgrade guide. For 1.17 it says the release honors the v1.0 compatibility promises and points you at the changelog. That's normal inside 1.x. If something breaks, look at providers first, then at scripts that parse CLI output, then at the edge cases in the bug fixes. This is the order we'd go in.
Upgrading from 1.16 (or earlier) to 1.17
- 01Inventory versions and pins
List the Terraform version every pipeline, runner and laptop uses, and every required_version constraint. A constraint like ~> 1.16.0 blocks 1.17 until you change it. If you're on 1.15 or earlier, read the upgrade notes in the 1.16 and 1.15 changelogs too: bastion_host_key for provisioners, and the S3 backend's FIPS and dual-stack variables.
- 02Check what parses Terraform's output
Track down anything that reads terraform version -json and make sure it ignores unknown fields or reads format_version. HashiCorp's advice is to use current hashicorp/terraform-json and terraform-exec.
- 03Check certificate paths
Go 1.26.10, used for 1.17.0 and 1.16.7, no longer trusts certificates from the compromised eMudhra intermediates. If a private registry, proxy or backend chains through one, it'll break, so check before rollout.
- 04Run plans side by side in a lower environment
Run plans with 1.16 and 1.17 against the same state with the same provider versions, with full refresh. Expect identical plans. Watch for new warnings from ephemeral resource renewals and errors from log or pow.
- 05Upgrade providers separately
Don't change Terraform and provider versions in the same step. During provider upgrades, plan without -minimal-refresh or -refresh=false so schema changes reach state.
- 06Adopt the new features on purpose
Move duplicated terraform blocks to const variables where it helps. Try -minimal-refresh on pull-request plans. Pilot Terraform Policy beside your Sentinel or OPA rules before you rely on it.
- 07Cut over and record it
Raise required_version, rebuild runner images and set the new version on your HCP Terraform or Terraform Enterprise workspaces. Production applies still get a full-refresh plan first.
Harden so the next one hurts less
Nothing in 1.17 forces new habits on you. Still, each change in it points at a spot where upgrades usually hurt, and the steps below fix those spots one at a time.
Habits that make the next Terraform upgrade boring
- 01Keep one full-refresh plan in front of production
Use -minimal-refresh for quick pull-request feedback if you like. The plan that gates a production apply should still refresh everything, because that's the only one that sees hand-made changes.
- 02Look for drift on a schedule
Run a refresh-only plan against production on a schedule, say nightly, and send the output to someone who reads it. A console change then turns up within a day instead of during the next release.
- 03Pin versions and commit the lock file
Set required_version in every root module and commit .terraform.lock.hcl, which records the exact provider versions and checksums. Upgrades then happen when someone decides, in a reviewed change.
- 04Move one thing at a time
Change Terraform core and providers in separate steps, each with its own plan comparison. When a plan looks odd, you'll know which change caused it.
- 05Run policy as code in CI
Write guardrails for things auditors ask about, like public storage or open security groups, and run them on every plan. Start them as Advisory and raise them to Mandatory once they're quiet.
- 06Back up state before every cut-over
Take a copy of each state file, or note its version in HCP Terraform, before the first apply on a new release. HashiCorp doesn't guarantee that an older 1.x can read state a newer one wrote.
If the upgrade goes wrong
If the upgrade goes wrong
Most failed Terraform upgrades show up as a broken pipeline or a plan nobody expected. Stop applying first, then work out which change caused it. Don't try to fix state by hand under pressure.
- 01Stopfirst hour
- Pause applies in every pipeline and workspace that moved to 1.17. Plans can keep running, since they don't change anything.
- Tell the teams who deploy through Terraform that changes are frozen, and say roughly for how long.
- Don't run terraform state commands or edit state files until you know what went wrong.
- 02Diagnosefirst day
- Compare a 1.17 plan from a test branch with a 1.16.7 plan on the same state and providers, both with full refresh.
- Check the obvious suspects in order: certificate errors to registries or proxies, scripts choking on format_version, new ephemeral renewal warnings, log or pow errors.
- If a plan missed drift, check whether it ran with -minimal-refresh. That's expected behaviour, and the fix is a full-refresh plan.
- 03Roll backday 1 to 2
- Pin required_version and runner images back to 1.16.7, which carries the same Go 1.26.10 fix, so you don't lose the certificate update.
- If an apply on 1.17 already wrote state, only restore the pre-cut-over copy when that apply changed nothing in the cloud. Otherwise stay on 1.17 and fix forward, because the old state won't know what that apply built.
- Run a full-refresh plan on the old version and confirm it shows no unexpected changes before you lift the freeze.
- 04Fix and retrywithin a week
- Fix the cause on a lower environment first: the script, the certificate chain or the pin. Then repeat the side-by-side plans.
- Move one environment at a time, starting with the least critical, and keep the state backups until each one is stable.
- 05Record and learnafter cut-over
- Write down what broke and add a check for it to the upgrade runbook. Next time the check runs before anyone notices a problem.
- If a missed drift changed a security setting, tell the security team. They'll want it on record before the next audit asks.
What this looks like in real life
What this looks like in real life
- the setup
- A platform team runs dev, staging and prod from one Terraform codebase. Each environment pulls providers from a different private registry organization, so they keep three near-identical terraform blocks and a script that swaps them before init.
- what happens
- On 1.17 they move the organization name into a const variable and set it with a var file per environment. The swap script goes away. One engineer tries to feed the value from a data source and init rejects it, which is the limit working as designed.
- what to do
- Use const variables or locals built from them, set by -var, var files or environment variables. Keep anything computed during a plan out of required_providers.
- the setup
- A retailer's cloud account holds thousands of resources in one state, and full plans hit provider rate limits. The team switches pull-request plans to -minimal-refresh and loves the speed.
- what happens
- During an incident, someone opens a security group by hand in the console. The fast pull-request plans don't see it, because nobody changed that resource in code. The full-refresh plan in front of the production apply does see it and shows the drift.
- what to do
- Keep -minimal-refresh for quick feedback only. Gate every production apply on a full-refresh plan, and run a scheduled refresh-only plan so hand changes surface within a day.
- the setup
- A large company has teams on 1.15, 1.16 and now 1.17, a home-grown wrapper that parses terraform version -json, and a corporate proxy in front of its private registry.
- what happens
- The first runners on 1.17.0 fail to reach the registry because the proxy's certificate chain isn't trusted by the Go 1.26.10 build. Teams that patched to 1.16.7 hit the same wall the same week. Separately, the wrapper's strict parser trips on the new format_version field.
- what to do
- Check certificate chains before rollout, since 1.16.7 behaves the same way. Fix the wrapper to ignore unknown fields or read format_version, then move teams one at a time from a single pinned version.
Cohash writes and maintains Terraform for clients: module design, state clean-up, version upgrades. Our Terraform platform page has the detail. If you'd rather staff it yourself, hire Terraform engineers through us, or ask for a free assessment of your code, state and pipelines first. The DevSecOps practice handles pipelines and policy.
What to take from this
- 01
1.17.0 came out October 21, 2026, and the upgrade guide has no extra steps. Still test it on a lower environment before production.
- 02
Const variables and locals now work in required_providers when they're known before planning.
- 03
-minimal-refresh saves API calls but hides drift on untouched resources. Put a full plan in front of production applies.
- 04
Terraform Policy is GA for -policies in the CLI, even though the policy docs still said beta on October 22.
- 05
Before rollout, check whatever parses terraform version -json and any certificate chain through the eMudhra intermediates.
01We don't use Terraform ourselves. Does this affect us?
Only if someone builds your cloud with it, like an agency, a managed service provider or your own platform team. Ask them which version they run and when they plan to upgrade. You don't need to do anything technical yourself.
02Do we have to upgrade to 1.17 right away?
No. Nothing in 1.17 is a security fix you'd miss on 1.16, because 1.16.7 carries the same Go 1.26.10 certificate change. Plan the move for a quiet week and test it on a lower environment first.
03Can we go back to 1.16 if 1.17 causes problems?
Usually, if no apply on 1.17 has changed anything yet. Pin back to 1.16.7, revert any config that uses 1.17-only features like variables in provider requirements, since 1.16 won't run it, and rerun a full-refresh plan. HashiCorp doesn't guarantee an older 1.x can read state a newer one wrote, so back up each state file before the first apply on 1.17.
04Is upgrading from Terraform 1.16 to 1.17 a breaking change?
HashiCorp doesn't treat it as one. It's a 1.x minor release that keeps the v1.0 compatibility promises, and the upgrade guide lists no special steps. The things we'd still check are tools that parse terraform version -json, new warnings from ephemeral renewals, log and pow erroring on infinity, and certificate chains affected by Go 1.26.10.
05What does terraform plan -minimal-refresh do?
It refreshes only what Terraform plans to change, so a large state makes fewer API calls. The catch: anything changed outside Terraform on the other resources goes unseen. It won't combine with refresh-only mode or -refresh=false, and HashiCorp says to leave it off during provider upgrades.
06Can I use variables in required_providers now?
In 1.17 you can, as long as the values are known before planning. Use input variables declared with const = true, or locals built from them, for source and version. Resources and data sources won't work there.
07Is Terraform Policy generally available?
The 1.17.0 changelog says so for the CLI's -policies flag. HashiCorp's policy docs still showed a beta note on October 22, 2026. Ask HashiCorp before you gate production on it.
08Do the two security bulletins from this summer affect the Terraform CLI itself?
No, neither does. HCSEC-2026-17 is in self-managed Terraform Enterprise (fixed in 2.0.4 and 1.2.4) and HCSEC-2026-23 is in terraform-mcp-server 0.2.1 through 1.0.0 (fixed in 1.1.0). The CLI had its own fixes, mind you: 1.15.9 updated go-slug for CVE-2026-14978, and 1.17.0 and 1.16.7 ship Go 1.26.10 for CVE-2026-111943.
Three questions, about a minute
Pick an answer and we'll tell you if it's right, and why it is or isn't. The score stays in this browser.
-
Q1Your production pipeline plans with -minimal-refresh, and someone changed a security group by hand in the console. What will the plan show?
show the answer
B. If you didn't change that resource in code, the plan won't show the drift Instances with no planned change skip the refresh under minimal refresh, so a change made outside Terraform to one of them won't appear. That's why production applies should still get a full-refresh plan.
-
Q2Dev and prod use different private registry organizations. What can required_providers reference in 1.17 to pick the right one?
show the answer
D. A const input variable or a local built from one Terraform needs the value before planning. Const variables and locals qualify; resources and data sources don't.
-
Q3Next sprint brings a new AWS provider and a new Terraform core. How do you sequence them?
show the answer
A. Upgrade providers separately and plan without -minimal-refresh During provider upgrades HashiCorp wants a full refresh, without -minimal-refresh or -refresh=false, so schema changes reach state. And one change at a time keeps plan differences easy to explain.