Infrastructure as Code: Provisioning & Change Control with Terraform and GitOps
Course Overview
This course starts with the basics by providing an overview of Infrastructure-as-Code
(IaC), which is the basic concept for Terraform. We will explore how Terraform can be
used as an IaC tool on Amazon Web Services (AWS) and also cover its features and
benefits. We’ll then look at how Terraform transforms lines of code into real
infrastructure on AWS.
Terraform allows infrastructure to be expressed as code. The desired state is expressed
in a simple human-readable language. Terraform uses this language to provide an
execution plan of changes, which can be reviewed for safety and then applied to make
changes. Extensible providers allow Terraform to manage a broad range of resources,
including hardware, IaaS, PaaS, and SaaS services.
By expressing all infrastructure as code, source code version control techniques (with
Git) become available as a superior change control process, wherein all changes to
systems are tracked, with a full audit history of who made changes, and when the
changes were made.
Learning Outcomes
- Understanding of Infrastructure as code
- Understanding of Terraform basics and its execution flow
- Understanding HCL (HashiCorp Configuration Language) syntax
- Creating infrastructure on AWS using Terraform
- Defining variables in Terraform
- Best practices for Change Control using Git
Course Outline
Introduction to Infrastructure as Code (Iac) & Terraform
- Introduction to Infrastructure as code
and Terraform - Hashicorp Configuration Language
(HCL) syntax - Create your first infrastructure using
Terraform execution flow - Updating a resource in Terraform
configuration file - State file and other files created by
Terraform - Defining Variables in Terraform
- Passing variables via terraform.tfvars
file - Writing configuration files to create a
resource in AWS - Creating a resource in AWS via
Terraform
Provisioning AWS Infrastructure with Terraform
- Terraform Code Structure
- Terraform Providers
- Terraform Configuration Syntax
- Initializing Working Directories
- Authenticating to AWS
- Creating Resources
- Terraform Plan & Apply
- Formatting & Validating Configuration
Files - Destroying Infrastructure with
Terraform - Replacing Infrastructure with
Terraform - Creating Resources: AWS Subnet
- Customizing Terraform Configuration
with Variables - Security Groups and Firewall
Configuration - Automatic SSH Key Pair Generation
with Terraform - Terraform Data Sources
- Filtering AMIs using Data Sources
- Query Data with Outputs
- Understanding Terraform State
- The Terraform State Command
- Running Commands Using User Data
- Provision Infrastructure with Cloud-Init
- Terraform Provisioners
- Terraform Troubleshooting & Logging
HCL In Depth
- Terraform Simply Types: Number,String, Bool
- Terraform Collection Types: List and Map
- Creating IAM Users using Count
- Using Dynamic Blocks
- Conditional Expressions
Terraform Remote State & Security
- Backends and Remote State Management
- Terraform Remote State on Terraform Cloud
- State Locking
- Managing Secrets
- Storing Secrets using Variables
- Storing Secrets using
Change Control Best Practices with Terraform & Git
- Appropriate branching strategies
- Integration with CI/CD pipelines in Gitlab
- Best practices for commit messages format
- Change Control audit trail using Git log
- Change Control security using Gitlab users and Public Key Infrastructure (PKI)
Skill Level
Suitable For
Developers who want to learn how to automate the orchestration of infrastructure across multiple cloud platforms with Terraform
Prerequisites
- DEVOPS-102: Linux Fundamentals (or equivalent)
- DEVOPS-103: Git Fundamentals (or equivalent)
- DEVOPS-104: Continuous Integration Basics (or equivalent)
- DEVOPS-204: Continuous Integration & Continuous Delivery with Gitlab (not essential,
but very strongly recommended) - DEVOPS-205: AWS Cloud Practitioner Preparation (or equivalent)
Duration
day
Related Topics
Infrastructure as Code: Provisioning & Change Control with Terraform and GitOps
Skill Level
Suitable For
Developers who want to learn how to automate the orchestration of infrastructure across multiple cloud platforms with Terraform
Duration
day
Related Topics
Course Overview
This course starts with the basics by providing an overview of Infrastructure-as-Code
(IaC), which is the basic concept for Terraform. We will explore how Terraform can be
used as an IaC tool on Amazon Web Services (AWS) and also cover its features and
benefits. We’ll then look at how Terraform transforms lines of code into real
infrastructure on AWS.
Terraform allows infrastructure to be expressed as code. The desired state is expressed
in a simple human-readable language. Terraform uses this language to provide an
execution plan of changes, which can be reviewed for safety and then applied to make
changes. Extensible providers allow Terraform to manage a broad range of resources,
including hardware, IaaS, PaaS, and SaaS services.
By expressing all infrastructure as code, source code version control techniques (with
Git) become available as a superior change control process, wherein all changes to
systems are tracked, with a full audit history of who made changes, and when the
changes were made.
Learning Outcomes
- Understanding of Infrastructure as code
- Understanding of Terraform basics and its execution flow
- Understanding HCL (HashiCorp Configuration Language) syntax
- Creating infrastructure on AWS using Terraform
- Defining variables in Terraform
- Best practices for Change Control using Git
Course Outline
Introduction to Infrastructure as Code (Iac) & Terraform
- Introduction to Infrastructure as code
and Terraform - Hashicorp Configuration Language
(HCL) syntax - Create your first infrastructure using
Terraform execution flow - Updating a resource in Terraform
configuration file - State file and other files created by
Terraform - Defining Variables in Terraform
- Passing variables via terraform.tfvars
file - Writing configuration files to create a
resource in AWS - Creating a resource in AWS via
Terraform
Provisioning AWS Infrastructure with Terraform
- Terraform Code Structure
- Terraform Providers
- Terraform Configuration Syntax
- Initializing Working Directories
- Authenticating to AWS
- Creating Resources
- Terraform Plan & Apply
- Formatting & Validating Configuration
Files - Destroying Infrastructure with
Terraform - Replacing Infrastructure with
Terraform - Creating Resources: AWS Subnet
- Customizing Terraform Configuration
with Variables - Security Groups and Firewall
Configuration - Automatic SSH Key Pair Generation
with Terraform - Terraform Data Sources
- Filtering AMIs using Data Sources
- Query Data with Outputs
- Understanding Terraform State
- The Terraform State Command
- Running Commands Using User Data
- Provision Infrastructure with Cloud-Init
- Terraform Provisioners
- Terraform Troubleshooting & Logging
HCL In Depth
- Terraform Simply Types: Number,String, Bool
- Terraform Collection Types: List and Map
- Creating IAM Users using Count
- Using Dynamic Blocks
- Conditional Expressions
Terraform Remote State & Security
- Backends and Remote State Management
- Terraform Remote State on Terraform Cloud
- State Locking
- Managing Secrets
- Storing Secrets using Variables
- Storing Secrets using
Change Control Best Practices with Terraform & Git
- Appropriate branching strategies
- Integration with CI/CD pipelines in Gitlab
- Best practices for commit messages format
- Change Control audit trail using Git log
- Change Control security using Gitlab users and Public Key Infrastructure (PKI)