# KodeKloud: Beta Courses Terraform Basics Training Course

## Terraform Basics Training Course

### Introduction

- [Course Introduction](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Introduction/Course-Introduction/page.md): This article introduces a comprehensive course on Terraform and Infrastructure as Code, covering installation, HCL basics, core concepts, and advanced functionalities.

### Introduction to Infrastructure as Code

- [Challenges with Traditional IT Infrastructure](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Introduction-to-Infrastructure-as-Code/Challenges-with-Traditional-IT-Infrastructure/page.md): This article discusses the challenges of traditional IT infrastructure and the transition to cloud computing and Infrastructure as Code for improved application delivery.
- [Types of IAC Tools](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Introduction-to-Infrastructure-as-Code/Types-of-IAC-Tools/page.md): This article introduces Infrastructure as Code and reviews popular IAC tools for automating infrastructure provisioning and management.
- [Why Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Introduction-to-Infrastructure-as-Code/Why-Terraform/page.md): This article explores Terraform, its key features, and how it simplifies infrastructure management across various platforms using Infrastructure as Code.

### Getting Started with Terraform

- [Installing Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Getting-Started-with-Terraform/Installing-Terraform/page.md): Learn how to install Terraform, a tool for managing infrastructure as code, on a Linux system.
- [HashiCorp Configuration Language HCL Basics](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Getting-Started-with-Terraform/HashiCorp-Configuration-Language-HCL-Basics/page.md): Learn the fundamentals of HCL, including syntax, creating resources, and essential Terraform commands for managing infrastructure configurations.
- [Update and Destroy Infrastructure](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Getting-Started-with-Terraform/Update-and-Destroy-Infrastructure/page.md): This guide explains how to update and destroy infrastructure using Terraform, including changing resource configurations and executing destruction commands.

### Terraform Basics

- [Using Terraform Providers](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Using-Terraform-Providers/page.md): This guide explains how Terraform providers enable resource management across platforms, covering initialization, provider tiers, and source addresses.
- [Configuration Directory](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Configuration-Directory/page.md): This lesson explores the structure and naming conventions of the Terraform configuration directory for better project organization and configuration management.
- [Multiple Providers](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Multiple-Providers/page.md): Learn to leverage multiple providers in Terraform configurations to generate random resources alongside existing ones.
- [Using Input Variables](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Using-Input-Variables/page.md): Terraform input variables enhance code reusability and flexibility by allowing parameterization of configurations for dynamic values during execution.
- [Understanding the Variable Block](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Understanding-the-Variable-Block/page.md): This article explores the Terraform variable block, including variable definition, type constraints, and complex data structures for efficient infrastructure code.
- [Using Variables in Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Using-Variables-in-Terraform/page.md): Learn techniques to pass input variables in Terraform, including default values, command line input, environment variables, and variable definition precedence.
- [Resource Attributes](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Resource-Attributes/page.md): Learn to link resources in Terraform using attributes, enhancing infrastructure interdependence and dynamic configurations.
- [Resource Dependencies](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Resource-Dependencies/page.md): This lesson explores resource dependencies in Terraform, focusing on implicit and explicit dependencies for resource creation and deletion management.
- [Output Variables](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Basics/Output-Variables/page.md): Terraform output variables store results from configuration files for later use, enhancing resource management and integration with other tools.

### Terraform State

- [Introduction to Terraform State](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-State/Introduction-to-Terraform-State/page.md): This article explores Terraform state management, detailing how it tracks infrastructure changes and the significance of the state file in managing resources.
- [Purpose of State](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-State/Purpose-of-State/page.md): This article explores the role of the state file in Terraform and how it maps resource configurations to real-world infrastructure.
- [Terraform State Considerations](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-State/Terraform-State-Considerations/page.md): This guide explores important considerations for managing Terraform state files, focusing on security best practices and differences between configuration files and state files.

### Working with Terraform

- [Terraform Commands](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Terraform-Commands/page.md): This guide explores essential Terraform commands for validating configurations, managing providers, outputting variables, refreshing state, and visualizing resource dependencies.
- [Mutable vs Immutable Infrastructure](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Mutable-vs-Immutable-Infrastructure/page.md): This article explains the differences between mutable and immutable infrastructure, focusing on their implications for Infrastructure as Code and tools like Terraform.
- [LifeCycle Rules](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/LifeCycle-Rules/page.md): This article explores configuring lifecycle rules in Terraform to manage resource creation and deletion effectively, ensuring service continuity during infrastructure updates.
- [Datasources](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Datasources/page.md): This article explains how Terraform uses data sources to read information from externally managed resources for infrastructure provisioning.
- [Meta Arguments](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Meta-Arguments/page.md): Meta-arguments in Terraform modify resource block behavior, enabling advanced configurations like multiple instances and dependency management.
- [Count](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Count/page.md): This article explores Terraform’s count meta-argument for creating multiple resource instances and discusses issues with modifying the underlying list used with count.
- [for each](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/for-each/page.md): This article explores using the for_each meta-argument in Terraform to manage resources more reliably than with the count meta-argument.
- [Version Constraints](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Working-with-Terraform/Version-Constraints/page.md): This article explains how to specify provider versions in Terraform using version constraints to maintain configuration stability.

### Terraform with AWS

- [Getting Started with AWS](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Getting-Started-with-AWS/page.md): This article provides an introduction to AWS, its services, global infrastructure, and how to manage resources using Terraform.
- [Demo Setup an AWS Account](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Demo-Setup-an-AWS-Account/page.md): This guide walks you through setting up an AWS account, including creating an account, entering payment information, and verifying your phone number.
- [Introduction to IAM](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Introduction-to-IAM/page.md): This lesson explores Identity and Access Management in AWS, focusing on user creation, permissions, roles, and best practices for securing cloud resources.
- [Demo IAM](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Demo-IAM/page.md): This lesson explores AWS Identity and Access Management using the console, covering user creation, policy attachment, and role setup for secure access.
- [Programmatic Access](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Programmatic-Access/page.md): Learn to interact with AWS Cloud programmatically using the AWS Command Line Interface for managing resources through scripts and command-line operations.
- [AWS IAM with Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/AWS-IAM-with-Terraform/page.md): Learn to provision AWS IAM resources using Terraform for efficient and secure infrastructure management.
- [IAM Policies with Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/IAM-Policies-with-Terraform/page.md): Learn to create and attach IAM policies using Terraform, following the principle of least privilege for AWS users.
- [Introduction to AWS S3](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Introduction-to-AWS-S3/page.md): This article provides an introduction to AWS S3, covering its storage capabilities, data organization, and access control mechanisms.
- [S3 with Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/S3-with-Terraform/page.md): This guide explains how to create and manage an S3 bucket using Terraform, including uploading files and attaching bucket policies.
- [Introduction to DynamoDB](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Introduction-to-DynamoDB/page.md): This guide provides an introduction to Amazon DynamoDB, a fully managed NoSQL database solution designed for high scalability and low latency data access.
- [Demo Dynamodb](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/Demo-Dynamodb/page.md): This guide demonstrates creating and managing a DynamoDB table using the AWS Management Console, including adding items and filtering results.
- [DynamoDB with Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-with-AWS/DynamoDB-with-Terraform/page.md): Learn to create and manage DynamoDB tables using Terraform, including table creation and data insertion. Gain practical experience with the Terraform AWS provider for DynamoDB.

### Remote State

- [What is Remote State and State Locking](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Remote-State/What-is-Remote-State-and-State-Locking/page.md): This article introduces remote state in Terraform and explains the importance of state locking for team collaboration.
- [Remote Backends with S3](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Remote-State/Remote-Backends-with-S3/page.md): This article explains how to configure Terraform to use a remote backend with AWS S3 and DynamoDB for state management.
- [Terraform State Commands](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Remote-State/Terraform-State-Commands/page.md): This guide explains how to list and manipulate Terraform state files using various state commands.

### Terraform Provisioners

- [Introduction to AWS EC2 optional](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/Introduction-to-AWS-EC2-optional/page.md): This article explores Amazon EC2, a service for running scalable virtual machines in the cloud with various configurations and storage options.
- [Demo Deploying an EC2 Instance optional](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/Demo-Deploying-an-EC2-Instance-optional/page.md): Learn to provision a Linux EC2 instance and configure it to serve web content using Nginx through a step-by-step guide for beginners.
- [AWS EC2 with Terraform](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/AWS-EC2-with-Terraform/page.md): Learn to deploy an AWS EC2 instance running Ubuntu using Terraform, covering configuration, SSH access, and security group setup.
- [Terraform Provisioners](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/Terraform-Provisioners/page.md): This article explains how to effectively use Terraform provisioners for remote and local operations during resource management.
- [Provisioner Behaviour](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/Provisioner-Behaviour/page.md): Learn to use provisioners in Terraform for executing scripts during resource creation or destruction, enhancing flexibility and custom actions on resources.
- [Considerations with Provisioners](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Provisioners/Considerations-with-Provisioners/page.md): This article explores considerations for using provisioners in Terraform, emphasizing their complexity and recommending resource-native features for better infrastructure management.

### Terraform Import, Tainting Resources and Debugging

- [Terraform Taint](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Import-Tainting-Resources-and-Debugging/Terraform-Taint/page.md): This article explains how to use Terraform’s taint and untaint commands for effective resource recreation management.
- [Debugging](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Import-Tainting-Resources-and-Debugging/Debugging/page.md): This article explores enabling and using debugging in Terraform to troubleshoot and resolve issues effectively.
- [Terraform Import](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Import-Tainting-Resources-and-Debugging/Terraform-Import/page.md): This guide explains how to import existing infrastructure into Terraform configuration using the Terraform import command.

### Terraform Modules

- [What are modules](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Modules/What-are-modules/page.md): This guide explores Terraform modules and demonstrates how to use them to simplify and modularize Terraform configurations.
- [Creating and Using a Module](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Modules/Creating-and-Using-a-Module/page.md): This guide explains how to create a reusable Terraform module for deploying a payroll application across multiple AWS regions.
- [Using Modules from the Registry](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Modules/Using-Modules-from-the-Registry/page.md): Learn to leverage Terraform Registry modules for simplified infrastructure provisioning and reusable configurations across projects.

### Terraform Functions and Conditional Expressions

- [More Terraform Functions](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Functions-and-Conditional-Expressions/More-Terraform-Functions/page.md): This lesson explores additional Terraform functions for processing and transforming values, including numeric, string, collection, and map functions.
- [Conditional Expressions](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Functions-and-Conditional-Expressions/Conditional-Expressions/page.md): This guide explores operators and conditional expressions in Terraform, covering arithmetic, equality, comparison, and logical operators for configuration files and the console.
- [Terraform Workspaces OSS](https://notes.kodekloud.com/docs/Terraform-Basics-Training-Course/Terraform-Functions-and-Conditional-Expressions/Terraform-Workspaces-OSS/page.md): This lesson explores using Terraform workspaces to manage multiple environments and streamline infrastructure as code projects.
