
We're going to setup your IAM Security in this lesson.
We'll investigate billing setup here.
In this lesson, we're going to configure the AWS "Provider" to allow us to start deploying resources in AWS!
In this lesson, we're going to initialize our Terraform deployment in order to obtain the provider code needed.
In this lesson, we're going to perform our first Terraform Apply!
In this lesson, we're going to dive into the Terraform State a little.
In this lesson, we're going to configure Terraform Cloud to safely and securely store our state
In this lesson, we're going to explore state a little more now that we have a resource deployed.
In this lesson, we're going to take a look at how variables work in Terraform.
In this lesson, we're going to deploy an Internet Gateway in order to get our resources to the internet!
In this lesson, we're going to see how we can add some entropy to our deployments to ensure our resources are unique and don't have clashing names.
In this lesson, we'll see how to manage lifecycle policies to ensure our deployments do not encounter errors.
In this lesson, we're going to deploy our Public Route Table!
In this lesson, we're going to utilize the Default Route Table.
In this lesson, we'll check out the Availability Zone datasource.
In this lesson, we're going to deploy some Subnets!
In this lesson, we're going to utilize the Count meta-argument in order to scale our deployment as needed.
In this lesson, you're going to put your skills to the test and create a private subnet!
in this lesson, we're going to explore an interesting little issue with Terraform Console that we'll want to understand.
In this lesson, we're going to utilize Local Values to help clean up our deployment.
In this lesson, we're going to use the cidrsubnet() function to do our subnetting for us!
In this lesson, we're going to associate our subnets with our route tables.
In this lesson, we're going to create our security groups to protect our deployment.
In this lesson, we're going to create an SSH Key to use to connect to our instances.
Just a little cleanup!
in this lesson, we're going to utilize the aws_ami datasource to find our AMI.
in this lesson, we're going to start deploying our EC2 Instance!
in this lesson, we're going to add the SSH key to our ec2 instance to ensure we're able to connect to it when needed.
in this lesson, we're going to provide some bootstrap instructions through userdata that will initialize our EC2 instance with a new hostname and install the popular observability tool, Grafana.
In this lesson, we're going to take a look at the "taint" command.
In this lesson, we'll look at how Terraform can run commands on our local system.
In this lesson, we'll see how to create a provisioner that provisions on destroy.
In this lesson, we're going to create a remote provisioner that will connect to our instance. This will also utilize a "null" resource.
In this lesson, we're going to give our Cloud9 instance a little more hard drive space.
In this lesson, we're going to install Ansible!
In this lesson, we're going to play with Ansible a little to get the feel for how it operates using Ad-Hoc commands.
In this lesson, we're going to investigate the inventory file.
In this lesson, we'll start scaffolding out our playbook to make it more manageable while creating it!
We'll use the apt_key module here to add the gpg key to our system.
We'll add the apt_repository for Grafana here.
We'll install Grafana using apt!
You'll get the chance to use the Systemd module to start and enable Grafana here!
In this lesson, we're going to undo what we've done and uninstall Grafana using a playbook.
In this lesson, we're going to stop doing things manually and call the Ansible playbook directly from Terraform!
in this lesson, we're going to look at one way to retry the playbook on hosts that failed.
In this lesson, we're going to see how to ensure all instances are ready before we attempt to connect with Ansible.
In this lesson, we're going to scaffold our playbook in order to get ready for the build ahead!
In this lesson, we'll look at the get_url and unarchive modules.
In this lesson, we'll check out user and group modules.
In this lesson, we'll check out directories and files and use loops to simplify our playbook.
In this lesson, we'll investigate one of the more powerful features of Ansible, its Jinja templating system.
In this lesson, you're going to Terraform Apply Yourself TWICE by creating a new template file and adding the systemd module.
In this lesson, you're going to install Jenkins with Ansible all by yourself!
In this lesson, we'll do some basic Jenkins configuration.
In this lesson, we're going to configure Github to allow us to manage our repository with Jenkins.
In this lesson, we're going to make some code modifications and commit to our repo.
In this lesson, we're going to get some credentials setup to allow Jenkins to work properly.
In this lesson, we're going to run our Jenkins build for the first time!
In this lesson, we're going to finally deploy something with Jenkins!
In this lesson, we're going to bootstrap our node using Jenkins.
In this lesson, we're going to start working towards our Pipeline as Code. We'll start by creating the multi-branch pipeline that will monitor multiple Github branches and deploy on push.
In this lesson, we're going to start scripting our Jenkinsfile and begin our automatic builds!
In this lesson, we're going to setup the environment block that will provide credentials and settings to the rest of our deployment.
In this lesson, you're going to add the steps necessary to Terraform Apply and Terraform Destroy! Then we'll test to make sure everything works properly!
In this lesson, we're going to take the EC2 Wait condition we had in our Terraform Provisioner and move it to a separate Jenkins stage so it can be managed.
In this lesson, we're going to utilize the Ansible plugin for Jenkins and set it up so it can configure our instances.
In this lesson, we're going to make our Jenkinsfile more dynamic and controlled by allowing it to accept user input to control the flow.
In this lesson, you're going to add the remaining inputs to the Jenkinsfile and we're going to finally deploy everything to the cloud to see our working Grafana and Prometheus installations!
In this lesson, we're going to take a look at the "Post" section in the Jenkinsfile to allow us to destroy the deployment if it fails.
In this lesson, we're going to configure our dev.tfvars and main.tfvars.
In this lesson, we're going to create the dev branch and add the $BRANCH_NAME variable to ensure our deployment utilizes the proper tfvars file.
In this lesson, we're going to configure conditionals in our pipeline in order to manipulate its behavior based on the branch to which we push.
In this lesson, we're going to see how to force a destroy if our script is aborted manually.
in this lesson, we're going to revisit our old friend JQ a little bit and see if we can find some ways to optimize our deployment.
In this lesson, we'll add our EC2 Wait script to our Jenkinsfile.
in this lesson, we're going to check out an easier way to access the information we need using jq. By specifying outputs, we can simplify the amount of jq scripting we need to do.
In this lesson, you're going to utilize the skills learned in the previous lesson to optimize our EC2 Wait Script.
in this lesson, we're going to use an Ansible playbook to test for connectivity in your Grafana and Prometheus applications.
In this lesson, we're going to optimize our playbook by introducing loops and dicts, which will allow it to become more modular.
In this lesson, we're going to finally use Grafana and Prometheus together to graph a CPU event!
In this course, we'll deploy Grafana and Prometheus to EC2 instances using the popular Devops tools Terraform, Ansible, and Jenkins. Everything will be built in AWS and will be mostly in the free tier! We will start from the basics of Ansible to deploy Jenkins, then use Jenkins to deploy deployments created in Terraform and Ansible in a completely controlled way that allows us to manage errors and issues we may encounter along the way.
You will not only learn how to create deployments, you'll also learn how to manage those deployments within Github and setup a Gitops pipeline that can be used to deploy all sorts of great projects in the future!
So join the course today and let's get started! You'll find that the skills learned within this course can be applied not only to existing tools taught, but any other tools as well. Since most tools follow the same DevOps methodologies, these skills are transferrable and useful at most organizations you would want to work for! Nearly all major companies in the world use some or all of the tools in this course, so you can know these tools are useful. And most new tools that come out are based on these tools, so even if they're different, you'll find that they're still useful!
I hope you enjoy the course and feel free to reach out to me any time! As you can see by my other courses, I am extremely personally responsive (not just a bunch of assistants) and am always happy to help!