Using third-party plugins
Regardless to how convenient it is to connect Terraform with other external tools, such as configuration management systems, one would always prefer a built-in, native solution. An example is, as discussed previously, the Chef provisioner: while it's possible to do exactly the same with remote-exec
, it's much faster to use special provisioner written just for this purpose. Unfortunately, while the list of supported providers is long, some of the technologies or services you need will be missing.
Luckily, Terraform has a plugin-based architecture, and it's trivial to extend it with custom providers and provisioners. Plugins are written in the Go programming language, and if you want to write your own, you need to have at least basic knowledge of it.
There are plugins available on GitHub that you could use. Ideally, developers should contribute these providers and provisioners to the Terraform core. Sometimes, though, it's not possible: it takes time to create and test...