
In this lesson, we're going to open a new project in VScode, Install the Azure CLI, and connect it to our Azure account.
in this lesson, we're going to finally start coding! first we'll configure the Azure provider and then run a Terraform Init to initialize terraform and get it ready to deploy Azure resources.
in this lesson, we're going to create, and finally deploy, an Azure Resource group which will keep all of our resources within azure nice and contained. This is honestly one of my favorite features of azure as it really helps keep things separated nicely.
in this lesson, we're going to set the groundwork for our deployment by deploying a virtual network. In order to do that, we'll also need to learn how to reference attributes of other resources.
in this lesson, we're going to take a slight detour from building to dive into the "terraform state" a bit so we better understand how information about our deployment is stored.
in this lesson, we're going to check out a command almost as fun to use as terraform apply, but much more fun to say!
In this lesson, we're going to deploy a subnet into our virtual network. This way, we have an IP address space that can be used by our virtual machines.
In this lesson, we're going to add a very important resource to our deployment, the security group.
in this lesson, we're going to association our brand new security group with our subnet so it can be actually used to protect it!
in this lesson, we're going to give our future virtual machine a way to the internet by creating a public IP.
in this lesson, we're going to create the network interface that we will attach to our Virtual Machine to provide network connectivity. This NIC will receive its public ip address from the ip address we just created.
in this lesson, we're going to start scaffolding out our linux VM.
In this lesson, we're going to create an ssh keypair. This will be used by the Linux VM resource we created so that we can SSH into it later
in this lesson, we're going to utilize the customdata argument to bootstrap our instance and install the docker engine. This will allow us to have a Linux VM instance deployed with docker ready to go for all of our development needs.
In this lesson, we're going to install the remote ssh extension in vscode to allow vscode to open a remote terminal in our VM and we're going to take a look at the configuration scripts we're going to use to insert the VM host information into our SSH Config file that that vscode uses to connect to instances.
in this lesson, we're going to utiilize a provisioner to configure the vscode on our local terminal to be able to ssh into our remote VM.
now, a provisioner is not something you want to use for every deployment. Unlike other resources, a provisioner's success or failure will not be recorded or managed by state. So if something goes wrong, that's just too bad. there is no rollback or other way to manage it other than just running it again.
While this is not good for configuring remote instances, it's perfectly fine for something like this. Just adding information to a config file on our local terminal. This is a lightweight operation that doesn't affect the overall success of the deployment if something were to go wrong.
in this lesson, we're going to take a look at terraform data sources. These are ways that we can query items from the provider, in this case azure, API and utilize it within our code. Although we don't really need It since it's already available in our state file, we're going to query the public Ips we're using just to illustrate how data sources work.
In this lesson, we're going to add a nice little convenience feature to our script by utilizing outputs to display information we need.
as you well know, we've been manually finding the public ip address of our instances to verify them. Well, that is incredibly inefficient, so let's add an output to make that a lot easier.
in this lesson, we're going to start optimizing our script and making it more dynamic by adding variables.
we've now seen how to initialize a variable and how to define it at the command line, but as we saw, that is not a great way to define variables when in automation as it requires dynamic input, which is the opposite of automated.
In this lesson, we're going to look at a few other ways to define variables and which of those ways take precedence over the others.
So now that we've managed to choose our ssh-config file dynamically based on the defintiion of our host_os, we now need to make our interpreter dynamic. Unfortunately, this isn't a simple interpolation syntax replacement, so we need to look at a better way.
In this lesson, we're going to utilize conditional expressions to choose the interpreter we need dynamically based on the defintion of the host_os variable.
Welcome to the Terraform Foundations with Azure course!
In this course, you're going to build your own development environment that allows you to automatically connect Visual Studio Code running on your Windows, Mac, or Linux machine to an Linux VM instance running Ubuntu in Azure! This will allow you to easily configure a proper dev or DevOps environment quickly through infrastructure automation using Terraform.
This course is for those brand new to Terraform who want to start diving in to such a great platform! We start from scratch and all you'll need is a little familiarity with AWS. All Powershell and/or Bash scripts are included!
This course is compatible with Windows, Mac, and Linux!
In this course, you'll learn many valuable Terraform concepts including:
Providers
State
Init
Plan
Apply
Destroy
FMT
Datasources
The File Function
The Templatefile Function
Provisioners
Variables
Conditional Expressions
Outputs
And More!
All while building an Azure environment including:
Resource Groups
Virtual Networks
Subnets
Public IPs
Security Groups
Linux VMs
What does it mean to be a Resume Foundations Project? It means that this course is designed to help you learn the basics of a technology fast with a hands-on project that can serve as a framework for your own projects that you can put on your resume to get the DevOps job of your dreams!
So sign up today and get learning!