
I use it to automate the deployment and management of the servers and databases that make up the back end of our enterprise data systems, such as our new Human Resource Management System and a facial recognition based attendance system. We use it to create and maintain the server and database clusters across our cloud providers to ensure our development, staging and production environments are identical.The level of automation and repeatability that it offers is great. We were doing all of the server provisioning, network rule creation, and database cluster creation for our Python stacks by hand and this was a painful work of clicks. Now, it's all written down.My favorite feature is the plan and apply. Having a simulation that tells me what will be created, changed, or deleted before anything actually happens gives me confidence, especially when we are changing the critical systems for our HRMS. And there's a huge provider ecosystem. Whether we're making changes to cloud networks, creating load balancers, or managing DNS, there's probably a provider for that. And it's provider-independent, so we aren't tied to a single provider's set of tools. Review collected by and hosted on G2.com.
Probably the most painful thing is dealing with the state file. If you're not set up right with remote state and state locking, things get complicated. We've spent some time scratching our heads because of state conflicts when more than one person has tried to push.And while the HashiCorp Configuration Language (HCL) isn't the most challenging to learn, it certainly takes time to get used to. Your junior team members have to come to terms with advanced state modules, for_each and dynamic blocks. Lastly, importing existing infrastructure, that you create manually, into the state file using the import command is still not a very efficient process. Review collected by and hosted on G2.com.




