Course Code: terinpbesp
Duration: 14 hours
Prerequisites:

Learners need to have a level equivalent to:

  • Foundational knowledge of Operating Systems such as Windows or Linux, as well as a basic understanding of networking
  • Familiarity working in the Command Line Interface and using IDE's is advantageous, as well as a basic understanding of JSON
  • Basic understanding of cloud concepts, terminology can basic services of either AWS, Azure or GCP is highly recommended

Audience

  • DevOps Engineers
  • System Administrator
  • Infrastructure Engineer
  • Cloud Engineer
Overview:

By the end of the course, learners will have created infrastructure through Terraform scripts, which
provides a foundation to apply these skills into the workplace.


The course begins with an overview of Terraform and its usage, followed by a discussion around the
Hashicorp Configuration Language. Core Terraform concepts, such as Data Types and Providers, as
well as the use of Terraform’s configuration syntax, variables, resources. modules and functions.
Understanding of how Terraform operates, manages state, deals with configuration drift and building
a best practice will be covered.


Initially in the course learners will be introduced into the concepts of Infrastructure as Code. This will
be quickly followed by an introduction to Terraform and a ‘quick win’ lab to demonstrate the use of
terraform to deploy a simple resource.


As the course progresses the learner will increase their Terraform knowledge by understanding how
terraforms features can be used to deploy simple resources into the cloud.


As more advanced concepts are introduced, together with more complex deployments into the cloud,
the use of real-world documentation is also referenced, such as may be done in the workplace. The
information and knowledge gained will constantly be enforced by a series of labs.


The labs will be often in a ‘workshop’ style where the learner is given a set of challenges and asked to
use terraform to build a solution in the cloud that meets a given set of requirements. As with the real-
world, we must identify the requirements, plan the work to be undertaken and perform our research
before creating and testing our configuration. The course structure will reflect this as before each lab
we investigate, plan and identify tasks as a group before the learner proceeds on their own to build
infrastructure. End solution files are provided if needed.

Course Outline:

Introducing IaC & Terraform

  • Infrastructure as Code
  • Introducing Terraform
  • Comparing Vendor tools to Terraform
  • Basic Terraform

Terraform Foundations

  • Installing Terraform
  • Authentication
  • The Terraform files (into Modules)
  • Template structure
  • Introduction to workspaces
  • Init
  • Plan
  • Apply
  • Parallelism
  • Implicit vs. explicit dependencies

Terraform Providers

  • AWS
  • Azure
  • GCP
  • Code examples

Terraform Variables and Functions

  • Introduction to Variables
  • Input Variables
  • Output Values
  • Introducing Built in functions
  • Built in functions
  • References to Named Values
  • Interpolation, Expressions & Functions

Terraform Files & Configuration

  • Template design
  • Nesting
  • Introduction to Workspaces
  • Managing State
  • Local Vs Remote Backend
  • Configuration Drift
  • Recreating Resources
  • Terminating Resources
  • Importing Resources
  • Local vs. Remote Execution
  • Logging

Introduction to Terraform Cloud

  • Comparison: OSS vs. Cloud vs. Enterprise
  • Local Vs, TFC Workspaces
  • Introduction to Terraform Cloud
  • Setting up and using TFC