Part 1: Infrastructure as Code
In this section, we will introduce the benefits that Infrastructure as Code (IaC) can bring to organizations and how IaC fits within modern DevOps best practices.
- Motivation for Infrastructure as Code
- Applying Infrastructure as Code in DevOps
- Infrastructure as Code principles and best practices
- Benefits of Infrastructure as Code
- The case for Terraform
Part 2: Terraform Overview
This section provides an overview of Terraform concepts and vocabulary and instructs how Terraform manages infrastructure configuration in cloud environments.
- Terraform architecture
- Terraform configuration language overview
- Terraform CLI
- The lifecycle of a configuration
- Managing configuration state
Hands-on Labs:
- Using the Terraform CLI
- Setting up a Terraform project
Part 3: AWS Resources
In this section, participants will get hands-on practice using Terraform to create a simple application environment in AWS and learn the essential constructs in Terraform for defining resources.
- Resource types
- Best practices in declaring resources
- Network resources (VPC, subnet, security group)
- Compute resources (virtual machine)
- Storage resources (database)
- Local values in a configuration
- Augmenting a configuration with data sources
Hands-on Labs:
- Creating a VPC and subnets
- Adding a virtual machine into your VPC
- Adding a database to your VPC
- Using locals for replicated values
- Using a data source to read external configuration
Part 4: Terraform Programming
This section introduces programming constructs within Terraform that enable you to add more control and flexibility in defining resources.
- Data structures (primitives, maps, lists, objects, etc.)
- Types of expressions to set values
- Creating multiples of a resource
- Dynamic blocks
- Parameterizing a configuration with variables
- Outputs from a configuration
- Functions
- Handling errors
Hands-on Labs:
- Using variables in a configuration
- Getting outputs from a configuration
- Creating a re-sizable cluster of virtual machines
- Creating multiple resources through iteration loops
- Leveraging functions in your code
Part 5: Modules
This section shows how modules can be used to create reusable components in Terraform and teaches best practices in organizing Terraform code.
- Purpose of modules
- Module structure and code organization
- Invoking modules
- Module sources and versioning
- Nested modules
- Publishing modules
Hands-on Labs:
- Using an external module in your configuration
- Refactoring your code to implement a module
Part 6: Wrapping Up
This section wraps up the course with reviews to reinforce what you have learned.
- Reference material to learn more
- Course review
- Next steps