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.3, users of the built in vendor provisioners will see a deprecation warning. We expect to remove the four vendor provisioners in Terraform 0.15.
Since the release of Terraform 0.12, the general status of provisioners within Terraform has been that of a tool-of-last-resort for reasons outlined in our documentation. The reasoning is focused primarily on the uncertainty and complexity they add to Terraform usage by introducing actions that cannot yet be modeled by Terraform.
This deprecation is focused only on the small group of built-in, tool-specific, vendor provisioners. We have not taken this step lightly and understand some of our community members will be affected by this change.
To mitigate some of the pain associated with this change, we’ve prepared a simple migration guide. We hope this guide will help support the transition to the file, local-exec and remote-exec provisioners, all of which we will continue to support for the foreseeable future. We welcome any feedback on the guide.
Our HashiCorp education team has created a tutorial to encourage using Packer for machine image provisioning. Additionally there’s a tutorial specific to using Cloud-Init for provisioning as well.