5. 5
What is Terraform?
Terraform is a tool for provisioning infrastructure.
A tool for building, changing, and versioning infrastructure safely and efficiently.
Terraform provides a consistent workflow for operators to provision
infrastructure across public cloud, private cloud, and external services
Open-source, written in Golang
6. 6
Key features
Infrastructure as Code
• Infrastructure is described using a high-level configuration syntax.
• This allows a blueprint of your datacenter to be versioned and treated as you would any other
code.
• Additionally, infrastructure can be shared and re-used
Execution Plans
• Terraform has a "planning" step where it generates an execution plan.
• The execution plan shows what Terraform will do when you call apply.
• This lets you avoid any surprises when Terraform manipulates infrastructure
7. 7
Key features (cont)
Resource Graph
• Terraform builds a graph of all your resources, and parallelizes the creation and modification of
any non-dependent resources.
• Because of this, Terraform builds infrastructure as efficiently as possible, and operators get
insight into dependencies in their infrastructure
• Change Automation
• Complex changesets can be applied to your infrastructure with minimal human interaction.
• With the previously mentioned execution plan and resource graph, you know exactly what
Terraform will change and in what order, avoiding many possible human errors
8. 8
Why operators use Terraform?
Infrastructure as code
Enable automation and configuration reuse to quickly and safely provision
infrastructure at any scale.
Human readable HashiCorp Configuration Language (HCL)
Separate plan and apply phase
Declarative configurations
9. 9
Why operators use Terraform? (cont)
Cloud platform management
A workflow to provision and manage any infrastructure without losing the full
capabilities of each cloud.
70+ infrastructure providers
1000+ resources
Automatically reconcile dependencies
10. 10
Why operators use Terraform? (cont)
Self-service infrastructure
Provide verified modules to give Terraform users easy access to templates to set
up and run their cloud-based infrastructure.
Module Registry with public UI
Modules contributed by community & providers
Clean code for simple reuse
provisioning involves the process of preparing and equipping a network to allow it to provide (new) services to its users.
In general, provisioning means "providing" or making something available
Declarative programming is when you write your code in such a way that it describes what you want to do, and not how you want to do it
Declarative programming is when you write your code in such a way that it describes what you want to do, and not how you want to do it
Declarative programming is when you write your code in such a way that it describes what you want to do, and not how you want to do it