- Creates a weather dashboard using node-red, InfluxDB, and Grafana docker containers
- Uses an "image" module for the container image resources
- Uses a "container" module with a nested "volume" module for creating the containers with persistent volumes
- Key concepts include writing DRY Terraform code, passing outputs between modules, using provisioners, iterating through object variables, using dynamic blocks, and using workspaces
- Same concept of a weather dashboard using containers, but this time deployed on K3 instances on AWS
- Uses nodered to pull from the openweather map API, insert the data into InfluxDB, and then use Grafana to graph the data
- Containers are deployed to K3s using local config file
- Includes modules for:
- networking: Creates the VPC, public/private subnets, internet gateway, security groups, subnet groups (for RDS)
- loadbalancing: Creates the ALB, target groups, and listeners for load balancing between K3 nodes
- database: Creates the RDS MySQL database used for K3s
- compute: Uses Ubuntu AMI to deploy instances, bootstraps them with K3s and adds them to the ALB target group
- Terraform Cloud is used as the remote state backend for this deployment
- AWS role used for deployment is created with least privileges required and assumed by AWS user. Local credentials are secured with AWS vault
- Same weather dashboard using containers, but this time deployed on K8s
- Create AWS modules for networking and compute hosted in GitHub. Create modules in Terraform Cloud (TFC) backed by the GitHub repos.
- Create GitHub repo, TFC OAuth client (GitHub), and a TFC workspace all using Terraform
- Use the TFC workspace to deploy compute and networking using the modules when a commit is made in the GitHub repository