I feel strongly about two things:
1) I screwed up at the beginning so hard (there were _no_ best practices to be found so it was a bit wild west) that I've come to the point where I need to use something else, or rewrite everything.
2) Terraform is best when you are in a silo by yourself, or you're using something to do the state applies for you (Atlas, or DIY through Jenkins and friends).
It does a lot right that other tools don't do (stringing together resources is a cinch), but it also behaves in strange things and the statefile is both a huge positive, and a huge negative.
If you need to move fast it's not a bad tool to choose at all.
The BIG caveat here is as follows -- If you have a mixed-cloud setup and use AWS, GCE, Azure, DigitalOcean, etc.. at the same time; It's probably hands down the best tool for managing everything.
Notes:
- I only use AWS. I use some of the other TF providers mixed in with it. (Consul, Datadog)
- I started from scratch (no AWS resources -> 100% Terraform), the general opinion seems to be this is the better place to start from.
- I use a majority of Hashicorp's stuff and am quite partial to liking their products. Terraform is something I have the most opinions on. I have no problems strongly suggesting Packer, Consul, Vagrant, and Vault to anyone.
- One of the main reasons I'm considering alternatives is that, at my current position, I'm having trouble getting folks to wrap their heads around Terraform.