Detailed Course Outline
Module 01 - Introduction to Terraform for Google Cloud
Topics:
- Introduction to IaC
- What is infrastructure as code (IaC)?
 - Problems IaC can solve
 - Benefits of IaC
 - Provisioning versus configuration
 - Imperative versus declarative approach
 
 - Introduction to Terraform
- Terraform overview
 - Terraform features
 - IaC configuration workflow
 - Terraform use cases
 
 - Using Terraform
- How to use Terraform
 - Running Terraform in production
 - Installing Terraform
 - Authentication for Google Cloud
 
 
Objectives: Upon completion of this module, the student will be able to:
- Define infrastructure as code.
 - Explain the features and benefits of using Terraform.
 - Explain the use case of Terraform for Google Cloud.
 - Describe how to use Terraform for Google Cloud.
 
Module 02 - Terms and Concepts
Topics:
- The Author phase
- Terraform Directory structure
 - Introduction to HCL syntax
 - Resources
 - Variables
 - State
 - Modules
 
 - Terraform commands
- terraform init
 - terraform plan
 - terraform apply
 - terraform fmt
 - terraform destroy
 
 - Terraform Validator tool
- Introduction
 - Why use the Terraform Validator tool
 - Validation workflow
 - Terraform Validator use cases
 
 
Objectives: Upon completion of this module, the student will be able to:
- Explain the Terraform workflow.
 - Create basic configuration files within Terraform.
 - Explain the purpose of a few Terraform commands.
 - Describe the Terraform Validator tool.
 - Create, update, and destroy Google Cloud resources using Terraform.
 
Module 03 - Writing Infrastructure Code for Google Cloud
Topics:
- Introduction to Resources
- Resources overview
 - Syntax
 - Example
 - Refer a resource attribute
 
 - Considerations to define a resource block
 - Meta-arguments for resources
 - Resource dependencies
- Implicit dependency
 - Explicit dependency
 
 - Introduction to Variables
- Overview
 - Syntax to declare a variable
 - Syntax to reference and assign a value to a variable
 - Variables best practices
 
 - Introduction to output values
- Output values overview
 - Best practices
 
 - Terraform Registry and CFT
- Introduction to Terraform Registry
 - Introduction to CFT
 
 
Objectives: Upon completion of this module, the student will be able to:
- Declare the resources within Terraform.
 - Explain implicit and explicit resource dependencies.
 - Use variables and output values within the root configuration.
 - Explain Terraform Registry and Cloud Foundation Toolkit.
 
Module 04 - Organizing and Reusing Configuration with Terraform Modules
Topics:
- Introduction to modules:
- Why are modules needed
 - What is a module?
 - Example
 
 - Reusing configurations by using modules
- Module sources
 - Calling a module into the source configuration
 
 - Using variables to parameterize your configuration
 - Pass resource attributes using output variables
 - Module use cases, benefits, and best practices
 
Objectives: Upon completion of this module, the student will be able to:
- Define Terraform modules.
 - Use modules to reuse configurations.
 - Use modules from the public registry.
 - Use input variables to parameterize configurations.
 - Use output values to access resource attributes outside the module.
 
Module 05 - Introduction to Terraform State
Topics:
- Introduction to Terraform state
- How information is stored in a Terraform state file
 
 - Ways to save a state file
 - Storing a state file in a Cloud Storage bucket
- Issues when storing the Terraform state locally
 - Benefits of storing a state file in a Cloud Storage bucket
 - Process of storing a Terraform state file remotely in a Cloud Storage bucket
 
 - Terraform state best practices
 
Objectives: Upon completion of this module, the student will be able to:
- Define Terraform state.
 - List the benefits of storing the state file remotely.
 - Explain how to store the Terraform state in a Cloud Storage bucket.
 - Explain Terraform state best practices.