We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Learn DevOps

Infrastructure Automation With Terraform

Edward Viaene

Terraform has gained a lot in popularity lately and is the tool you need to master if you are or about to get into a Ops / DevOps role. You typically use a technology like Ansible, Chef, or Puppet to automate the provisioning of software. Terraform starts from the same principle, infrastructure as code, but focusses on the automation of the infrastructure itself. Your whole Cloud infrastructure (instances, volumes, networking, IPs) can be described in terraform. 

Read more

Terraform has gained a lot in popularity lately and is the tool you need to master if you are or about to get into a Ops / DevOps role. You typically use a technology like Ansible, Chef, or Puppet to automate the provisioning of software. Terraform starts from the same principle, infrastructure as code, but focusses on the automation of the infrastructure itself. Your whole Cloud infrastructure (instances, volumes, networking, IPs) can be described in terraform. 

In this course you'll learn how to use terraform to automate your infrastructure. I will first show you the basics of terraform and will then explain how to automate infrastructure on AWS using terraform. You can open an AWS account for free to do the labs. I also provide a lot of code examples which you can immediately use to automate your own infrastructure.

Update (Oct-2016):

  • Added AWS Autoscaling lectures

  • Added Terraform+Packer Jenkins integration lectures

  • Added Terraform with Docker on AWS (ECR and ECS)

  • Added Terraform with Jenkins workflow using ECR and ECS

Update (Dec-2016):

  • Added a lecture about useful terraform commands

  • Added a demo on how to use terraform show/graph/taint/untaint/import

  • Added a lecture and demo about Elastic Beanstalk on AWS

Update (Jun-2018):

  • Terraform for Windows setup + puttygen

  • Interpolation

  • Conditionals

  • Built-in functions

  • Module development with an ECS + ALB module demo

  • Setting up a hosted Kubernetes cluster using AWS EKS

Update (Nov-2019):

  • Terraform-0.12 updates

  • Lectures covering new variable approach in terraform-0.12

  • For & For Each loops

Update (March-2020):

  • CodePipeline lectures

  • Updated lectures with new AWS UI

  • Updated jenkins-packer-demo demo

Update (December-2020):

  • Advanced Module development

  • Lectures and demos covering new Terraform 0.13 features

  • Terraform lock file (terraform 0.14)

  • State manipulation

Update (December-2020):

  • A complete new section on the HashiCorp Terraform Certification has now been added.

Update (January-2022):

  • Refactoring modules with the "moved" block

  • Cloud Development Kit For Terraform (CDKTF)

This course includes english captions.

Enroll now

What's inside

Learning objectives

  • Understand, use and apply terraform, including advanced terraform features
  • Use terraform to provision aws resources
  • Prepare for the hashicorp terraform certification with lectures aligned with the exam objectives
  • Use terraform with packer to create custom images
  • Use terraform with aws ecs, fargate, and codepipelines
  • Be able to apply devops techniques using terraform

Syllabus

Course Introduction
Discussions and Support

Contains useful information for this course

Introduction to terraform
Read more

Introduction to what terraform is.

An explanation of how to install terraform on Windows / MacOS / Linux

Terraform Installation (on Windows)

An alternative installation procedure using Vagrant. This will allow you to use exactly the same setup I have!

Terraform basics

In this lecture I'll explain the basics of HCL (the HashiCorp Configuration Language) by using simple examples

First steps in terraform: learn how to spin up your first instance. First: AWS account setup.

First steps in terraform: learn how to spin up your first instance

Summary of the first steps in terraform

Terraform Variable Types

Test your knowledge

How to use variables in terraform

A demo of how to use variables in terraform

Provision software on your instance using chef / ansible / puppet / shell scripts.

A demo to show you how to provision software using a shell script

In this demo I'll show you how to use WinRM to provision a Windows Server

Using outputs in terraform you can output information on screen

A demo showing how outputs work

The terraform.tfstate can be stored remotely. This helps collaboration when using Terraform within a team. 

This demo shows how to store the remote terraform state in an S3 bucket. By changing a few flags you can also use it to save it to a consul cluster.

You can use datasources to retrieve external information like AWS IP addresses, AMI IDs, and so on.

A demo using the AWS Region IP ranges to create a security group that only allows access from eu-west-1 and eu-central-1 in AWS.

You can use a template provider in terraform to render templates into strings

How to use templates in terraform 0.12 onwards

There's more than just AWS in terraform. An overview of other providers.

An overview on how to use modules in terraform

A demo showing you how to use external modules. This demo will launch a full consul cluster using an external terraform module

An overview of useful terraform commands

A demo of a few useful terraform commands, including terraform show, terraform graph, terraform import, terraform taint, terraform untaint

Test your knowledge!

Terraform with AWS

An introduction to AWS VPCs (Virtual Private Cloud) - Part 1

An introduction to AWS VPCs (Virtual Private Cloud) - Part 2

An introduction to AWS VPCs (Virtual Private Cloud) - Part 3

A demo showing you how to launch a VPC with an internet gateway and a NAT gateway

Now that we have created our VPC, we can launch EC2 instances in the VPC

This is a demo showing you how to launch instances within a VPC

This lecture shows you how to use EBS (Elastic Block Storage) with an instance

This demo shows you how to attach EBS volumes to EC2 instances

Userdata can be used to execute commands at launch time

In this demo userdata will be used to format and mount an EBS volume if no filesystem is present. This way EBS volumes can be persisted in an automated way when the instance needs replacement.

This lecture explains the difference between private static IPs, EIPs and DNS (Route53)

This demo shows how to use Route53 to create DNS zones in AWS

This lecture explains how to spin up an RDS (relational database service) instance with terraform on AWS

In this demo I will spin up an RDS instance (using RDS subnets, RDS parameter groups, and security groups) and will connect from an EC2 instance to MariaDB..

IAM stands for Identity & Access Management. In this lecture I explain the different possibilities for access management. I explain users, groups, policies, and roles.

In this demo I create a group with an AWS group policy and attach it to a user.

IAM roles can be used to assume (temporary) access. In this lecture I explain how this works.

IAM roles can be used to assume (temporary) access. In this lecture I show you how to attach a role to an EC2 instance that will give permissions to read/write to an S3 bucket.

A lecture explaining how to setup autoscaling in AWS using terraform

A demo of autoscaling using terraform on AWS

Introduction into Elastic Load Balancers and Application Load Balancers in AWS

This lecture explains how to use ELBs in terraform with a static list of instances and an autoscaling group

A demo showing how to use terraform with an ELB together with autoscaling

An introduction of how the Application Load Balancer (ALB) works in terraform

ElasticBeanstalk (AWS's PaaS solution) setup using Terraform

ElasticBeanstalk (AWS's PaaS solution) setup demo using Terraform

Advanced Terraform Usage
Introduction to Interpolation
Conditionals
Demo: Interpolation and Conditionals
Built-in Functions
Demo: Built-in Functions

Since terraform 0.12 you can use loops with for and for each. This lecture explains how and when to use for/foreach

For loops demo in terraform

For-each loops demo in terraform

Terraform Project Structure
Demo: Project Structure in Terraform

The terraform providers lock file was introduced in terraform 0.14 and will from now on keep track of your provider and module dependency versions.

Terraform uses a state file (local / remote) that you can list resources of, read, and manipulate

Demo showing how to manipulate the state file in terraform

Packer

With packer AMIs can be created that can be used to launch an EC2 instance.

Where does Terraform fit in the DevOps organization? In this lecture I show you an example workflow with terraform, packer and jenkins

Packer can be integrated with terraform. This workflow shows how to create a workflow where packer creates the AMI and terraform launches the EC2 instance with the correct AMI ID

This demo shows a full cycle of an app in github, the building of a custom AMI with packer in Jenkins and the provisioning and deployment with Terraform

Using terraform with Docker on AWS

This lectures gives an introduction of Docker

This lecture explains how to use Docker on AWS using terraform

This lecture shows how to build docker images that can be pushed on ECR

In this demo I show how to push a docker built image to ECR

This lecture explains part I of the setup of ECS using terraform, with autoscaling and IAM roles

This lecture explains part II of the setup of ECS using terraform, with autoscaling, IAM roles, ECS task definitions and ECS Service definitions

This demo shows you how to run the pushed NodeJS app on ECS

In this demo I show you how to run a Jenkins workflow to build docker images, push the image to ECR, and use terraform to update ECS with the latest docker image

Module Development
Introduction to Module Development
ECS + ALB Module Overview
Demo: ECS + ALB Module (part I)
Demo: ECS + ALB Module (Part II)

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores the use of terraform, a tool essential for Ops and DevOps roles in automation and infrastructure management
Covers essential DevOps techniques using terraform, making it valuable for individuals in those fields
Taught by Edward Viaene, an experienced instructor in Ops and DevOps
Incorporates packer and jenkins integration, automating the creation and deployment of customized images
Suitable for individuals with an understanding of software provisioning tools and cloud infrastructure
May require beginners to have some prior knowledge in infrastructure automation

Save this course

Save Learn DevOps: Infrastructure Automation With Terraform to your list so you can find it easily later:
Save

Reviews summary

Intermediate devops course in terraform

According to students, this intermediate-level course teaches DevOps with Terraform. Course lectures are superficial and may use outdated Terraform syntax.
Some Terraform syntax used in lectures may be outdated.
"Lectures also use outdated and non-functioning terraform syntax..."
Course material is superficial.
"Very superficial and heavily tangled material."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Learn DevOps: Infrastructure Automation With Terraform with these activities:
Review terraform syntax
Refresh your understanding of basic terraform syntax and features to strengthen your foundation for the course.
Show steps
  • Refer to the official terraform documentation or online tutorials to review basic syntax.
  • Find simple examples online and try them out to practice writing terraform code.
Create a personalized terraform knowledge base
Organize and compile course materials, notes, and resources to create a comprehensive knowledge base for future reference.
Show steps
  • Review course materials and identify key concepts.
  • Create a digital or physical notebook to store notes and code snippets.
Build a simple infrastructure with terraform
Apply your understanding of terraform to create a simple infrastructure setup, reinforcing the concepts covered in the course.
Show steps
  • Set up a terraform workspace.
  • Define resources like VPC, subnets, and instances using terraform code.
  • Use terraform commands like 'plan' and 'apply' to provision the infrastructure.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Discuss terraform best practices
Engage with peers to share and learn about best practices in terraform, fostering a collaborative learning experience.
Show steps
  • Join online forums or discussion groups dedicated to terraform.
  • Participate in discussions to exchange ideas and gather insights from others.
Explore advanced terraform modules
Expand your understanding of terraform by delving into advanced modules, extending your capabilities for complex infrastructure management.
Show steps
  • Review documentation and tutorials on terraform modules.
  • Find and utilize publicly available terraform modules for common infrastructure components.
  • Build your own custom terraform modules for reusable infrastructure configurations.
Contribute to open-source terraform projects
Gain practical experience by contributing to real-world terraform projects, deepening your understanding of its applications.
Show steps
  • Identify open-source terraform projects on platforms like GitHub.
  • Review the project documentation and identify areas where you can contribute.
  • Submit pull requests with your contributions.
Participate in a terraform hackathon
Challenge yourself in a competitive environment to test your terraform skills and expand your knowledge.
Show steps
  • Research and identify upcoming terraform hackathons.
  • Form a team or participate individually.
  • Brainstorm and develop innovative terraform solutions.

Career center

Learners who complete Learn DevOps: Infrastructure Automation With Terraform will develop knowledge and skills that may be useful to these careers:
DevOps Engineer
A DevOps Engineer is responsible for bridging the gap between development and operations teams. They work to ensure that software is developed and deployed quickly and efficiently. DevOps Engineers typically have a background in both software development and systems administration. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a key skill for DevOps Engineers.
DevSecOps Engineer
A DevSecOps Engineer is responsible for integrating security into the development and operations process. This can include security testing, security monitoring, and security incident response. DevSecOps Engineers typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for DevSecOps Engineers.
Cloud Security Engineer
A Cloud Security Engineer is responsible for protecting cloud-based systems and data from unauthorized access, use, disclosure, disruption, modification, or destruction. Cloud Security Engineers typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for Cloud Security Engineers.
Cloud Developer
A Cloud Developer designs, develops, and maintains cloud-based applications. Cloud Developers typically have a background in computer science or software engineering. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for Cloud Developers.
Infrastructure Architect
An Infrastructure Architect designs, implements, and manages the infrastructure of an organization. This can include on-premises infrastructure, cloud infrastructure, or a combination of both. Infrastructure Architects must have a deep understanding of networking, storage, and virtualization technologies. They must also be able to work with a variety of operating systems and programming languages. The Learn DevOps: Infrastructure Automation With Terraform course is not specifically tailored to Infrastructure Architects, but it provides a strong foundation in infrastructure automation with Terraform, which is a valuable skill for anyone working in this field.
Cloud Architect
A Cloud Architect designs, implements, and manages cloud-based solutions for an organization. This can include public clouds, private clouds, or a combination of both. Cloud Architects must have a deep understanding of cloud computing technologies and services. They must also be able to work with a variety of cloud providers. The Learn DevOps: Infrastructure Automation With Terraform course provides a strong foundation in infrastructure automation with Terraform, which is a valuable skill for Cloud Architects.
Network Engineer
A Network Engineer designs, implements, and manages the networks of an organization. This can include local area networks (LANs), wide area networks (WANs), and wireless networks. Network Engineers typically have a background in computer science or electrical engineering. The Learn DevOps: Infrastructure Automation With Terraform course provides a strong foundation in infrastructure automation with Terraform, which is a valuable skill for Network Engineers.
Data Engineer
A Data Engineer designs, implements, and manages the data infrastructure of an organization. This can include data warehouses, data lakes, and big data platforms. Data Engineers typically have a background in computer science or data science. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for Data Engineers.
Security Engineer
A Security Engineer is responsible for protecting the computer systems and networks of an organization from unauthorized access, use, disclosure, disruption, modification, or destruction. Security Engineers typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for Security Engineers.
Systems Administrator
A Systems Administrator is responsible for maintaining and managing the computer systems of an organization. This can include servers, desktops, networks, and databases. Systems Administrators typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for Systems Administrators.
IT Manager
An IT Manager is responsible for planning, implementing, and managing the information technology (IT) infrastructure of an organization. This can include hardware, software, networks, and security. IT Managers typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which is a valuable skill for IT Managers who are working on cloud-based IT infrastructures.
Database Administrator
A Database Administrator is responsible for managing and maintaining the databases of an organization. This can include database design, database performance tuning, and database security. Database Administrators typically have a background in computer science or information technology. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which can be a valuable skill for Database Administrators who are working on cloud-based databases.
Web Developer
A Web Developer designs, creates, and maintains websites. Web Developers typically have a background in computer science or web development. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which can be a valuable skill for Web Developers who are working on cloud-based websites.
Software Engineer
A Software Engineer designs, develops, and maintains software applications. Software Engineers typically have a background in computer science or software engineering. The Learn DevOps: Infrastructure Automation With Terraform course provides a solid foundation in infrastructure automation with Terraform, which can be a valuable skill for Software Engineers who are working on cloud-based applications.

Reading list

We've selected seven books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Learn DevOps: Infrastructure Automation With Terraform.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser