Infrastructure-as-code legos that rootsystem can put together.

forest bbcd63c9ed move host key poller into gateway-instance module to make the progress 1 month ago
ansible-provision-gateway bbcd63c9ed move host key poller into gateway-instance module to make the progress 1 month ago
dns-gandi 90ce5f522d fixing syntax issues 3 months ago
gateway-dns 9030e45047 update modules now that ansible module has been added 1 month ago
gateway-instance-digitalocean bbcd63c9ed move host key poller into gateway-instance module to make the progress 1 month ago
ssh-keys-digitalocean 90ce5f522d fixing syntax issues 3 months ago
ReadMe.md 90ce5f522d fixing syntax issues 3 months ago

ReadMe.md

rootsystem-terraform-modules

Terraform is an infrastructure-as-code automation tool that is designed to make it easier to deploy and maintain cloud resources.

Rootsystem uses Terraform to manage cloud resources as a part of a server.garden deployment.

Why is this needed?

server.garden strives to make it easy for any internet user to host thier own server(s). This is difficult because hosting a server does not "just work" on most networks, especially home networks. server.garden solves this using something that the software industry calls "Hybrid Cloud Architechture", meaning that the system is built from both servers that you own & operate, and cloud resources that you pay someone else to operate.

Hybrid Cloud Architechture works well with self-hosting because we get to chose where we draw the line between what we own and what the cloud provider owns.

Owned by User Owned by Cloud Service Provider
Server Computers Public IP Address
Transport Layer Security (TLS) Keys Domain Name & DNS Records
TCP Packets (Plaintext Traffic) TLS Packets (Encrypted Traffic)

In other words, we get the best of both worlds, and we can be flexible on how much work we want to take on ourselves.

We use terraform to manage the cloud resources to make that happen.

How does rootsystem build a terraform project out of this?

Rootsystem analyzes the modules and records the names of the inputs and outputs. Modules with matching input/output names will automatically be wired together. This allows, for example, the user to chose which cloud provider(s) they want to use.

Input names that end in list will match up with any outputs that have a matching prefix. For example:

The two outputs dns_entry_root and dns_entry_www would be wired into entries in a list for a single input called dns_entry_list

When the user creates server.garden installation media, they will be prompted to select which modules they want to use via an installation wizard.

Third party Terraform providers used by these modules

https://github.com/tiramiseb/terraform-provider-gandi