Validate Infrastructure and Enforce OPA Policies
Validate configuration with pre and postconditions. Enforce infrastructure policies with OPA and prevent Friday deployments.
Try the tutorialHashiConf EU
Try the new features that you learned about during the conference.
Get Started
Build, change, and destroy infrastructure with Terraform. Start here to learn the basics of Terraform with your favorite cloud provider.
Get Certified
Prepare for Associate Certification with our prep materials, or follow tutorials that cover most of the major topics covered in the exam.
New Tutorials
Try the newest tutorials for common Terraform tasks and use cases.
All Terraform Tutorials
What is Infrastructure as Code with Terraform?
Install Terraform
Lock and Upgrade Provider Versions
Build Infrastructure
Destroy Infrastructure
Store Remote State
Log in to Terraform Cloud from the CLI
Migrate State to Terraform Cloud
Customize Terraform Configuration with Variables
Output Data from Terraform
Query Data Sources
Create Resource Dependencies
Perform Dynamic Operations with Functions
Manage Resources in Terraform State
Import Terraform Configuration
Manage Resource Drift
Use Refresh-Only Mode to Sync Terraform State
Troubleshoot Terraform
Modules Overview
Use Modules from the Registry
Host a Static Website with S3 and Cloudflare
Provision Infrastructure with Cloud-Init
Provision Infrastructure with Packer
Install the Sentinel CLI
Inject Secrets into Terraform Using the Vault Provider
Perform CRUD Operations with Providers
Setup and Implement Read
Add Authentication to a Provider
Implement Complex Read
Debug a Terraform Provider
Implement Create
Implement Update
Implement Delete
Implement Import
Release and Publish a Provider to the Terraform Registry
Implement Create and Read with the Terraform Plugin Framework
Log in to Terraform Cloud from the CLI
Migrate State to Terraform Cloud
Connect Workspaces with Run Triggers
Manage Permissions in Terraform Cloud
Manage Terraform Versions in Terraform Cloud
Configure GitHub.com Access through OAuth
Manage Private Environments with Terraform Cloud Agents
Deploy Infrastructure with the Terraform Cloud Operator for Kubernetes
Deploy Consul and Vault on Kubernetes with Run Triggers
Automate Terraform Cloud Workflows
Version Remote State with the Terraform Cloud API
Manage Variable Sets in Terraform Cloud
Configure Snyk Run Task in Terraform Cloud
Terraform Cloud Secrets Engine
Migrate State from S3 to Terraform Cloud
Create Preview Environments with Terraform, GitHub Actions, and Vercel
Set Up Terraform Cloud Run Task for HCP Packer
Identify Compromised Images with Terraform Cloud
Enforce Image Compliance with Terraform Cloud
Validate Infrastructure and Enforce OPA Policies
Use Application Load Balancers for Blue-Green and Canary Deployments
Host a Static Website with S3 and Cloudflare
Deploy, Manage, and Scale an Application on Heroku
Deploy an Application to a DigitalOcean Droplet
Deploy Federated Multi-Cloud Kubernetes Clusters
Deploy Applications with CDK for Terraform
Automate Monitoring with the Terraform Datadog Provider
Create Preview Environments with Terraform, GitHub Actions, and Vercel
Add Public Providers and Modules to your Private Registry
Build AWS Infrastructure with CDK for Terraform
Deploy Lambda Functions with TypeScript and CDK for Terraform
Manage Terraform Versions
Lock and Upgrade Provider Versions
Manage Terraform Versions in Terraform Cloud
Version Remote State with the Terraform Cloud API
Use Refresh-Only Mode to Sync Terraform State
Inject Secrets into Terraform Using the Vault Provider
Terraform Cloud Secrets Engine
Codify Management of Vault Using Terraform
Codify Management of Vault Enterprise Using Terraform
AppRole With Terraform & Chef
Deploy HCP Vault with Terraform
Deploy Consul and Vault on Kubernetes with Run Triggers
Configure self-hosted Boundary using Terraform
Target-Aware Workers
OIDC Authentication
Network Infrastructure Automation with Consul-Terraform-Sync Intro
Consul-Terraform-Sync Run Modes and Status Inspection
Use Terraform to Register External Services
Deploy HCP Consul with Terraform
Provision Infrastructure with Packer
Use Application Load Balancers for Blue-Green and Canary Deployments
Codify Management of Vault Using Terraform
Codify Management of Vault Enterprise Using Terraform
AppRole With Terraform & Chef
Deploy Consul and Vault on Kubernetes with Run Triggers
Inject Secrets into Terraform Using the Vault Provider
Terraform Cloud Secrets Engine
Configure self-hosted Boundary using Terraform
Target-Aware Workers
OIDC Authentication
Manage AWS Auto Scaling Groups
Manage AWS Accounts Using Control Tower Account Factory for Terraform
Manage New AWS Resources with the Cloud Control Provider
Upgrade RDS Major Version
Use AssumeRole to Provision AWS Resources Across Accounts
Configure Default Tags for AWS Resources
Create IAM Policies
Deploy Serverless Applications with AWS Lambda and API Gateway
Use Application Load Balancers for Blue-Green and Canary Deployments
Host a Static Website with S3 and Cloudflare
Manage AWS RDS Instances
Provision an EKS Cluster (AWS)
Create Preview Environments with Terraform, GitHub Actions, and Vercel
Provision an EKS Cluster (AWS)
Provision an AKS Cluster (Azure)
Provision a GKE Cluster (Google Cloud)
Manage Kubernetes Resources via Terraform
Deploy Consul and Vault on Kubernetes with Run Triggers
Automate Terraform Cloud Workflows
Deploy Infrastructure with the Terraform Cloud Operator for Kubernetes
Deploy Applications with the Helm Provider
Manage Kubernetes Custom Resources
Deploy Federated Multi-Cloud Kubernetes Clusters
Import Terraform Configuration
Migrate State to Terraform Cloud
Manage Resources in Terraform State
Target resources
Troubleshoot Terraform
Manage Resource Drift
Manage Resource Lifecycle
Version Remote State with the Terraform Cloud API
Use Refresh-Only Mode to Sync Terraform State
Develop Configuration with the Console
Use Configuration to Move Resources
Deploy Federated Multi-Cloud Kubernetes Clusters
Codify Management of Vault Using Terraform
Codify Management of Vault Enterprise Using Terraform
AppRole With Terraform & Chef
Deploy Consul and Vault on Kubernetes with Run Triggers
Network Infrastructure Automation with Consul-Terraform-Sync Intro
Consul-Terraform-Sync Run Modes and Status Inspection
Use Terraform to Register External Services
Provision Infrastructure with Packer
Manage VMs and Snapshots on vSphere
Deploy Infrastructure with the Terraform Cloud Operator for Kubernetes
Manage Kubernetes Resources via Terraform
Deploy Applications with the Helm Provider
Automate Monitoring with the Terraform Datadog Provider
Use Application Load Balancers for Blue-Green and Canary Deployments
Host a Static Website with S3 and Cloudflare
Initialize Terraform Configuration
Create a Terraform Plan
Apply Terraform Configuration
Customize Terraform Configuration with Variables
Output Data from Terraform
Manage Terraform Versions
Lock and Upgrade Provider Versions
Target resources
Manage Resources in Terraform State
Import Terraform Configuration
Use Refresh-Only Mode to Sync Terraform State
Log in to Terraform Cloud from the CLI
Migrate State to Terraform Cloud
Troubleshoot Terraform
Develop Configuration with the Console
Verify Terraform Binary Archives
Define Infrastructure with Terraform Resources
Perform CRUD Operations with Providers
Customize Terraform Configuration with Variables
Protect Sensitive Input Variables
Simplify Terraform Configuration with Locals
Output Data from Terraform
Query Data Sources
Create Resource Dependencies
Manage Similar Resources with Count
Manage Similar Resources with For Each
Perform Dynamic Operations with Functions
Create Dynamic Expressions
Lock and Upgrade Provider Versions
Troubleshoot Terraform
Manage Terraform Versions
Use Configuration to Move Resources
Validate Modules with Custom Conditions
Looking for docs?
The Terraform documentation provides reference material and in-depth details on all of Terraform's available features and options.