I&#x27;ve been using Terraform for over a year, maintaining a standard 3 AZ load balanced production cluster.<p>HCL has improved dramatically, and now that template strings are a thing, most of my variable interpolation issues are solved. However you still can&#x27;t specify lists as input variables so you frequently have to resort to joining and splitting strings. It&#x27;s hackish and worse, changing one value in the list will invalidate all other resources that use the variable.<p>Race conditions and dependency cycles are still a problem. Particularly with auto scaling groups and launch configurations -- I have to migrate them in two steps (create then destroy) to avoid a conflict. Same with EBS volumes, I ended up scripting my instance to attach the volume by itself, otherwise there&#x27;s ordering issues when destroying and replacing.<p>There&#x27;s also missing features, such as the ability to create elasticache redis clusters and cloudformation resources.<p>I&#x27;m still glad that I went with Terraform though. It takes a good amount of time to get around the limitations and bugs, which can be really frustrating, but when it works, it works beautifully.