
Learn to make Terraform modules configurable by adding input parameters, replacing hardcoded names with a cluster name variable, and passing environment-specific values (stage and prod) when calling the module.
Install Docker on your platform using the platform-specific instructions; the Docker client communicates with the Docker daemon to create, manage, and run containers via the command line.
Create a dockerfile to containerize a node.js api, using node 16 alpine as the base, copy project files, run npm install, and configure the start command for local use.
Learn to build a Docker image from a Dockerfile, tag it for easy reference, run a container with port mapping, and push the image to Docker Hub for reuse.
Learn how Packer automates building identical virtual machine images, creating golden images, patching, and immutable infrastructure in CI/CD, by using templates, provisions, and AWS AMI workflows.
Install packer across platforms using Homebrew on macOS, Chocolatey on Windows, or Linux instructions; ensure eight seal item and the SC Ally tool are installed before building images with PECO.
Generate an SSH key pair, save it in the current directory, and bake the public key into the image during the packer build to enable SSH access after launch.
Create and verify a packer-built ubuntu image with docker, then deploy a cloud instance via terraform, setting up a vpc, subnets, and a terraform user with an ssh key.
Learn how GitHub Actions provide a first-class, GitHub-integrated CI pipeline that reacts to pushes and pull requests, runs on Linux, Mac, or Windows, and automates builds, tests, and deployments.
Configure build triggers in a GitHub workflow to start builds on pushes to master, specific file path changes (dockerfile, workflows, deploy/terraform, packer, source), and pull requests to master.
Configure a load balancer in a VPC to expose a web server cluster via HTTPS and HTTP, manage security groups and subnets, and enable auto scaling.
Utilize a terraform data template to render user data for an auto scaling group, fetch the latest Nomad AMI via a data source, and configure security groups, logs, and lifecycle.
Deployment is usually one of the aspects that is tackled last when it comes to application development, and until only recently deployment experience for both Developers and Operations teams was very painful.
To this end, DevOps practices have now been adopted quite widely, and in a nutshell, DevOps is the intersection between Development and Operations.
A lot of tools have been created to tackle the pain points of making a deployment and these fall into different categories, like configuration tools, server templating, and Infrastructure as Code to mention a few.
Now in a lot of tutorials and courses, the focus is on learning and using these tools individually without any real world context. This means that you will need to use these different tools together yourself, and this can be difficult to use them in a real world context.
In this course we will be making a hands on deployment of an E-commerce Node API application with a custom SSL domain using a combination of the deployments tools that are available. These include:
Git Version control
Linux
Bash Scripts
Terraform
Docker
Packer
Continuous Integration - GitHub Actions
AWS
We're going to use all of these tools together to make an automated deployment without any manual steps such as configuring infrastructure resources in the UI console. We're also going to have the advantage of versioning our infrastructure in Git, which means that should there be any issues we can simply roll back the infrastructure deployed to a previous state very easily.