Course Description:
Hashicorp's Terraform is one of the most popular infrastructure provisioning tools in the market, supporting multiple cloud providers (AWS, Azure, GCP, Oracle, etc.). This course enables students to use Terraform for defining infrastructure as code and automating infrastructure deployment - improving operational efficiency, lowering administrative overhead, and reducing the chance of human error.
What will you learn:
At the end of the course, students will have a firm understanding of Terraform basics and will be able to:
- Write Terraform configuration files
- Understand how Terraform integrates infrastructure sources
- Manage infrastructure environments
Target audience:
This course is for system administrators wishing to use Terraform to automate cloud-based infrastructure deployment.
Note: Every student has assigned to him his own virtual lab environment setup.
Prerequisites:
- familiarity with the Linux command line (commands, arguments, variables, working with files and directories, using text editors)
- basic TCP/IP networking (IP addressing, subnets, etc.)
- basic knowledge about cloud-based IaaS architecture and terminology (VM instances, VPCs/VCNs, load balancers, security rules, etc.)
Curriculum:
Module 1: Introduction. What Is Terraform?
- How we got to the DevOps era
- A quick glance at Terraform
Module 2: Positioning Terraform
- Defining Infrastructure as Code
- Scripts
- Configuration management tools
- Server templating tools
- Server provisioning tools
- Comparing Terraform to other tools
Module 3: Terraform Architecture
- Terraform language paradigm
- Workflow overview
- Environment parity
- Cloud Providers
- How Terraform works
Hands-on Lab: Environment set-up
Module 4: Installation and Getting Started
- Preparing the environment with examples for Linux, Windows and MacOS
- Major code elements in Terraform configuration files
Hands-on Lab: Installing Terraform
Module 5: Terraform Configurations Overview
- Configuring providers
- Preparing authentication credentials
- Regions and Availability Zones/Domains
- Deploying a server in AWS
- Updating an existing server
- Deploying a virtual network in OCI
- Inputs and outputs
Hands-on Lab: Working with variables
Module 6: Providers, Resources and More
- Managing providers and versions
- Working with multiple identical providers in multiple regions
- More resource creation examples
- Decommissioning virtual infrastructure
Hands-on Lab: Providers and data sources
Module 7: Post Configuration, Syntax
- Post-configuration tools: provisioners
- Provisioners types, usage, behaviors
- Functions in HCL
- The Terraform Console
- Recreating common construct behaviors: loops, conditionals
Hands-on Lab: Virtual instance resources
Module 8: Terraform States
- Terraform states overview
- Analyzing the contents of state files
- Sharing state files
- Securing and locking shared state files
- Read-only state
Hands-on Lab: Additional virtual resources
Module 9: Using modules
- Module basics
- Module inputs
- Module outputs
- Modules and paths
- Module usage best practices
- Adding and initializing modules from various sources
Hands-on Lab: Provisioners
Module 10: Using Variables
- Variables, variables, variables
- Variables stored in files
- Environment variables
- Securing variables
Module 11: Tips and Tricks
- Miscellaneous helpful tips
- Command-line options that lend a hand in writing IaC
- Code options for better control of the infrastructure
Additional details:
To attend this course, you need to have:
- PC/Laptop with internet access
- Updated web browser