Hashicorp releases drops of Terraform a regular basis, and September was no exception providing three updates. On September 30th, 0.13.4 was released and there is a change that has some important implications for those that rely on third-party provisioners that ship within the binary.
In the upgrade notes there is the following statement:
The built-in vendor (third-party) provisioners, which include
habitat
,puppet
,chef
, andsalt-masterless
are now deprecated and will be removed in a future version of Terraform. More information on Discuss.

In the Discuss article, Terraform states the following about this change:
Terraform is beginning a process to deprecate the built-in vendor provisioners that ship as part of the Terraform binary. Users of the Chef, Habitat, Puppet and Salt-Masterless provisioners will need to migrate to the included file, local-exec and remote-exec provisioners which are vendor agnostic. Starting in Terraform 0.13.4, users of the built in vendor provisioners will see a deprecation warning. We expect to remove the four vendor provisioners in Terraform 0.15.
Provisionor migration guide
Hashi corp has provided a guide to help those using these builtin provisioners to migrate away from relying on this code in the binary. The guide states the following information about the migration process:
Configuration management tools install and manage software on a machine that already exists. Terraform is not a configuration management tool, but can create machines that you then use with configuration management.
In order to migrate from using the now-deprecated vendor-specific provisioners (
chef
,habitat
,puppet
, orsalt-masterless
), you’ll need to modify your configuration to remove the reliance on these provisioners.This guide focuses on migrating from your current approach to a similar one using the native
file
andremote-exec
provisioners. However, there are other, preferred, approaches to initializing resources rather than usingprovisioner
blocks, including leveraging Packer, cloud-init, providers or user_data for initalizing your instances. You can find out more about these approaches on HashiCorp Learn.
Upgrade notes for version 0.13.4 of Terraform
The Terraform Changelog can be found on their GitHub.
UPGRADE NOTES:
- The built-in vendor (third-party) provisioners, which include
habitat
,puppet
,chef
, andsalt-masterless
are now deprecated and will be removed in a future version of Terraform. More information on Discuss. - Deprecated interpolation-only expressions are detected in more contexts in addition to resources and provider configurations. Module calls, data sources, outputs, and locals are now also covered. Terraform also detects interpolation-only expressions in complex values such as lists and objects. An expression like
"${foo}"
should be rewritten as justfoo
. (#27272] [#26334)
BUG FIXES:
- command: Include schemas from required but unused providers in the output of
terraform providers schema
. This allows development tools such as the Terraform language server to offer autocompletion for the first resource for a given provider. (#26318) - core: create_before_destroy status is now updated in the state during refresh (#26343)
- core: data sources using
depends_on
, either directly or through their modules, are no longer are forced to wait until apply by other planned data source reads (#26375)
The latest version of Terraform can be downloaded from the Hashicorp site.
Are you new to Terraform? Get started with Terraform on Azure.