DEVOPS-207

Infrastructure as Code: Provisioning & Change Control with Terraform and GitOps

Download as PDF
Customize your Training

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

Intermediate

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

3

 day

s

Related Topics

Customize your Training
DEVOPS-207

Infrastructure as Code: Provisioning & Change Control with Terraform and GitOps

Download as PDF
Customize your Training

Skill Level

Intermediate

Suitable For

Developers who want to learn how to automate the orchestration of infrastructure across multiple cloud platforms with Terraform

Duration

3

 day

s

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)