Terraform should have remained stateless
Having a state file isn&#x27;t a bad idea. State files are a logical map from your code to the AWS resources. You can actually import a resource that Terraform never created into a state file so that Terraform can manage it.<p>But of course, you could just write the code to explicitly include that pre-existing resource, rather than have to run a command to tell a state file to explicitly include it.<p>The problem with Terraform isn&#x27;t that it keeps its own state file. The problem is that Terraform is just <i>really dumb</i>, regardless of the state file. It doesn&#x27;t know how to auto-import existing resources. It doesn&#x27;t know how to overwrite existing resources. It doesn&#x27;t know how to detect existing resources and incorporate them into its <i>plan</i>. It doesn&#x27;t know how to delete resources that were unexpected. It&#x27;s so stupid that it basically just gives up any time any complication happens.<p>Puppet and Ansible aren&#x27;t that stupid. They both will make a best effort to deal with existing resources and work around problems. It&#x27;s not the presence or absence of an external state database that make those tools &quot;more advanced&quot;, it&#x27;s simple logic.