I'm helping companies to setup DevOps. That means for them to focus on their product, faster & more reliable delivery new features to production and stop wasting time for example on deployments and infrastructure.
how to define your infrastructure - Support removing resources (has state) - Help you to evolve infrastructure save & predictable way - Work with all major clouds (AWS, Azure, …) - Open Source (18 000 stars on Github) - Can predict costs (Terraform Enterprise)
with Ansible, Puppet, ... - Terraform is not a configuration management tool, Ansible or Puppet do it and do it pretty good - Terraform work with configuration management tool - Terraform creates infrastructure and run CM tool for setting up the resources
resources such as physical machines, VMs, network switches, containers, and more. Almost any infrastructure type can be represented as a resource in Terraform.
computed for use elsewhere in Terraform configuration. Use of data sources allows a Terraform configuration to make use of information defined outside of Terraform, or defined by another separate Terraform configuration.
and how an operation such as apply is executed. This abstraction enables non-local file state storage, remote execution, etc. Why remote state / backend? - Working in a team - Remote operations (CI/CD)
modules - terraform plan - show & prepare changes of infrastructure - terraform apply - apply new version of infrastructure - terraform destroy - destroy your infrastructure