2024-06-14 02:18:48 +00:00
|
|
|
Example Dockerised, Terraformed application deployment onto docker on bare metal
|
|
|
|
===============================================================================
|
|
|
|
|
|
|
|
We're gonna run Quassel on bare metal in the most low-effort and high-reward enterprisey way possible.
|
|
|
|
Why? Because we can.
|
|
|
|
|
|
|
|
## Pre-requisites
|
|
|
|
We're gonna need some tools:
|
|
|
|
|
|
|
|
* OpenTofu, the replacement for Terraform since Hashicorp changed the licence terms: https://opentofu.org/docs/intro/install/.
|
|
|
|
* As Tofu is a drop in replacement for Terraform, you can use Terraform if you prefer, and I'll refer to them interchangeably.
|
|
|
|
|
|
|
|
## What have we got going on in here?
|
|
|
|
The main players:
|
|
|
|
* database.tf - Configures our Quassel instances Postgres
|
|
|
|
* quassel.tf - Configures our Quassel instance itself
|
|
|
|
|
|
|
|
The bit-actors:
|
|
|
|
* docker.tf - Configures the Docker Provider for Tofu
|
|
|
|
* inputs.tf - Where inputs to this deployment are defined and may have defaults set
|
|
|
|
* outputs.tf - Where outputs from this deployment are defined, which will be output when we run `tofu apply` or `tofu outputs`
|
|
|
|
* terraform.tf - Telling Terraform/ToFu what packages we need to run this deployment
|
|
|
|
* .terraform.lock.hcl - Lock file for Terraform/ToFu, this is here to ensure that we're all using the same versions of the same packages
|
|
|
|
* terraform.tfvars - Where we may set the variables defined in inputs.tf
|
|
|
|
|
|
|
|
## What happens when we run this?
|
|
|
|
When we run `tofu apply`:
|
|
|
|
* Tofu will create a Docker network for our Quassel instance
|
|
|
|
* Tofu will create a Postgres instance for our Quassel instance
|
|
|
|
* Tofu will compile our Quassel instance image from the Dockerfile in the quassel directory
|
|
|
|
* Tofu will create a Quassel instance using that image
|
|
|
|
* Tofu will output the IP address of the Quassel instance and postgres instance
|
|
|
|
|
|
|
|
## How do we run this?
|
|
|
|
Did you give `tofu apply` a go yet?
|
|
|
|
|
|
|
|
## What we're gonna end up with:
|
|
|
|
|
|
|
|
`DIAGRAM GOES HERE`
|