Overview
Try Terraform Cloud
Sign up for Terraform cloud for free and start managing infrastructure with your team.
Get Started
Build, change, and destroy infrastructure with Terraform. Start here to learn the basics of Terraform with your favorite cloud provider.
New Tutorials
Try the newest tutorials for common Terraform tasks and use cases.
Get Certified
Prepare for Associate Certification with our prep materials, or follow tutorials that cover most of the major topics covered in the exam.
Build Providers
Use the Terraform Plugin Framework to build providers that use common Go conventions.
All Tutorials
- What is Infrastructure as Code with Terraform?
- Lock and Upgrade Provider Versions
- Build Infrastructure
- Change Infrastructure
- Destroy Infrastructure
- Store Remote State
- Initialize Terraform Configuration
- Create a Terraform Plan
- Apply Terraform Configuration
- Manage Terraform Versions
- Customize Terraform Configuration with Variables
- Protect Sensitive Input Variables
- Output Data from Terraform
- Query Data Sources
- Create Resource Dependencies
- Perform Dynamic Operations with Functions
- Create Dynamic Expressions
- Modules Overview
- Use Registry Modules in Configuration
- Build and Use a Local Module
- Refactor Monolithic Terraform Configuration
- Module Creation - Recommended Pattern
- Manage Resources in Terraform State
- Target Resources
- Manage Resource Drift
- Use Refresh-Only Mode to Sync Terraform State
- Troubleshoot Terraform
- Inject Secrets into Terraform Using the Vault Provider
- Log in to Terraform Cloud from the CLI
- Migrate State to Terraform Cloud
- What is Terraform Cloud - Intro and Sign Up
- Create a Credentials Variable Set
- Create a Workspace
- Create Infrastructure
- Change Infrastructure
- Use VCS-Driven Workflow
- Destroy Resources and Workspaces
- Running Terraform in Automation
- Deploy Infrastructure with Terraform and CircleCI
- Configure GitHub.com Access through OAuth
- Automate Terraform with GitHub Actions
- Connect Workspaces with Run Triggers
- Automate Terraform Cloud Workflows
- Deploy Consul and Vault on Kubernetes with Run Triggers
- Configure Snyk Run Task in Terraform Cloud
- Create Preview Environments with Terraform, GitHub Actions, and Vercel
- Set Up Terraform Cloud Run Task for HCP Packer
- Validate Infrastructure and Enforce OPA Policies
- Implement a Provider with the Terraform Plugin Framework
- Configure Provider Client
- Implement Data Source
- Implement Logging
- Implement Resource Create and Read
- Implement Resource Update
- Implement Resource Delete
- Implement Resource Import
- Implement Automated Testing
- Implement Documentation Generation
- Release and Publish to the Terraform Registry
- Log in to Terraform Cloud from the CLI
- Migrate State to Terraform Cloud
- Connect Workspaces with Run Triggers
- Manage Permissions in Terraform Cloud
- Upgrade Terraform Version in Terraform Cloud
- Configure GitHub.com Access through OAuth
- Manage Private Environments with Terraform Cloud Agents
- Deploy Infrastructure with the Terraform Cloud Kubernetes Operator v1
- 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
- Authenticate Providers with Dynamic Credentials
- 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
- Detect Infrastructure Drift and Enforce OPA Policies
- Create and Use No-Code Modules
- Organize Workspaces with Projects
- Use Health Assessments to Detect Infrastructure Drift
- Authenticate Providers with Vault-Backed Dynamic Credentials
- Enable Self-Service Workflows with Vault-Backed Dynamic Credentials
- 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
- Manage Hosted Apache Kafka with the Confluent Terraform Provider
- Automate Monitoring with the Terraform Datadog Provider
- Create Preview Environments with Terraform, GitHub Actions, and Vercel
- 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
- Automate your network configuration with Consul-Terraform-Sync
- 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
- Manage AWS DynamoDB Scale
- 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 Kubernetes Operator v1
- Deploy Infrastructure with the Terraform Cloud Kubernetes Operator v2
- Manage Agent Pools with the Terraform Cloud Kubernetes Operator v2
- 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
- Modules Overview
- Use Registry Modules in Configuration
- Build and Use a Local Module
- Customize Modules with Object Attributes
- Share Modules in the Private Registry
- Add Public Providers and Modules to your Private Registry
- Refactor Monolithic Terraform Configuration
- Module Creation - Recommended Pattern
- Use Configuration to Move Resources
- Create and Use No-Code Modules
- 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
- Customize Modules with Object Attributes
- Use Checks to Validate Infrastructure