As enterprises seek to deploy and maintain increasingly complex cloud infrastructure, there is a necessity to use “Infrastructure as Code” (IaC) tools, like Terraform. An open-source, state management tool developed by HashiCorp, Terraform allows developers to use a common coding interface to work through their various clouds safely and efficiently. Attendees will leave being able to write and understand Terraform code (HCL), have a clear understanding of Terraform’s various components and supporting tools, as well as when to reach for Terraform over another IaC tool, such as Ansible.
Skills Gained
You will learn essential Terraform concepts including:
- Writing Terraform HCL code
- Deploying into common clouds such as AWS, Azure, Docker, Kubernetes, and VMWare
- Where Terraform fits in the Enterprise CI/CD model
- Differences between Terraform and Ansible
- Best practices
Who Can Benefit
- DevOps Engineers
- Software Developers
- Technical Managers and Leads
- System and Cloud Administrators
- Network Engineers and Developers
Prerequisites
Although not required, students with some experience programming, or pre-existing knowledge of cloud architecture, will most appreciate the technical nature of this hands-on course.
Follow-on Courses
- Jenkins Automation Server Essentials (2 days)
- Ansible Essentials (5 days)
- Go Essentials (5 days)
- Git and GitHub (2 days)
- Git and GitLab (2 days)
Certification
- Terraform Essentials - Certification Project
Course Outline
Up and Running with Terraform
- Terraform Overview
- Defining “declarative”
- How to think about Terraform (versus Ansible)
- Reviewing the Terraform Configuration
- Running the Terraform Configuration
- Provisioners
Syntax
- “Low Level” HCL syntax
- Style Conventions
- Comments
- Blocks
- Arguments
- JSON Configuration Syntax
Resources
- Meta-Arguments
- depends_on
- count
- for_each
- provider
- lifecycle
- Data Sources
Variables and Output
- Input Variables
- Output Values
- Local Values
Modules
- Module Blocks
- Module Sources
- Meta Arguments
Terraform Templates
- templatefile Function
- Template Demonstration
- Introducing Data Sources
- Creating an External Data Source
- Building tftpl template files
Expressions
- Types and Values
- Strings and Templates
- Reference to Values
- Operators
- Function Calls
- Conditionals
- For Expressions
- Splat Expressions
- Dynamic Blocks
- Type Constraints
- Version Constraints
Functions
- String
- Collection
- Numeric
- Encoding
- Filesystem
- Date and Time
- Hash and Crypto
- IP Network
- Type Conversion
State
- Understanding the importants of state
- State storage and locking
- importing existing resources
- Remote State
- What to do when local state is lost
CICD Piplines with Terraform
- Terraform and GitLab pipelines
- Terraform and Jenkins pipelines
Enterprise Case Studies
- Terraform and Docker
- Terraform and Kubernetes
- Terraform and Amazon AWS
- Terraform and Azure
- Terraform and VMWare
- Understanding how to apply Terraform to your unique infrastructure
Beyond Basics
- Intro to Go Programming
- Terraform Cloud
- Additional HashiCorp Offerings
- Backends
- Secrets
Hands-On Labs
Overview of Terraform
- LECTURE - Introduction to Terraform
- Terraform Install
Docker
- Up and Running with Terraform
- Terraform Variables
- Output Values
- CHALLENGE - Terraform and Docker
Beyond Basics
- Terraform Language Values
- Terraform Local Action Provider
- Terraform Expressions and Errors
- Dynamic Operations with Functions
- Dynamic Provisioning with tfvars Files
- Importing Terraform Configuration
AWS
- Terraform and AWS
- Output Values and AWS
- Correcting Resource Drift and AWS
- CHALLENGE - Terraform and AWS
VMWare
Terraform and Enterprise
- Terraform Cloud
- Deploy a Go RESTful API microservice with Terraform
- Terraform and Ansible
Appendix