From abca33af29764f8fc740bf1ffae4239f10d6d47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Sun, 9 Apr 2023 09:45:05 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=AD=EF=B8=8F=20Second=20pass=20of=20Te?= =?UTF-8?q?rraform=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Break down provider-specific configuration into two files: - config.tf (actual configuration, e.g. credentials, that cannot be included in submodules) - variables.tf (per-provider knobs and settings, e.g. mapping logical VM size like S/M/L to actual cloud SKUs) --- prepare-labs/README.md | 20 +++++++++++++------ .../terraform/many-kubernetes/main.tf | 1 - .../terraform/many-kubernetes/variables.tf | 7 +------ .../terraform/one-kubernetes/aws/config.tf | 2 +- .../terraform/one-kubernetes/aws/variables.tf | 1 + .../terraform/one-kubernetes/civo/config.tf | 2 +- .../terraform/one-kubernetes/civo/provider.tf | 2 +- .../one-kubernetes/civo/variables.tf | 1 + .../one-kubernetes/digitalocean/config.tf | 2 +- .../one-kubernetes/digitalocean/variables.tf | 1 + .../one-kubernetes/exoscale/config.tf | 2 +- .../one-kubernetes/exoscale/variables.tf | 1 + .../one-kubernetes/googlecloud/config.tf | 2 +- .../one-kubernetes/googlecloud/locals.tf | 12 +++++++++++ .../one-kubernetes/googlecloud/variables.tf | 13 +----------- .../terraform/one-kubernetes/linode/config.tf | 2 +- .../one-kubernetes/linode/variables.tf | 1 + .../terraform/one-kubernetes/oci/config.tf | 2 +- .../terraform/one-kubernetes/oci/variables.tf | 1 + .../one-kubernetes/scaleway/config.tf | 2 +- .../one-kubernetes/scaleway/variables.tf | 1 + .../one-kubernetes/vcluster/config.tf | 2 +- .../one-kubernetes/vcluster/provider.tf | 9 --------- .../one-kubernetes/vcluster/variables.tf | 1 + .../terraform/providers/aws/config.tf | 3 +++ .../aws.tf => providers/aws/variables.tf} | 4 ---- .../terraform/providers/azure/config.tf | 3 +++ .../azure.tf => providers/azure/variables.tf} | 4 ---- .../civo.tf => providers/civo/config.tf} | 14 ------------- .../terraform/providers/civo/variables.tf | 13 ++++++++++++ .../providers/digitalocean/config.tf | 3 +++ .../digitalocean/variables.tf} | 4 ---- .../exoscale/config.tf} | 14 ------------- .../terraform/providers/exoscale/variables.tf | 13 ++++++++++++ .../terraform/providers/googlecloud/config.tf | 0 .../googlecloud/variables.tf} | 0 .../terraform/providers/hetzner/config.tf | 9 +++++++++ .../hetzner/variables.tf} | 10 ---------- .../terraform/providers/linode/config.tf | 3 +++ .../linode/variables.tf} | 4 ---- .../terraform/providers/oci/config.tf | 0 .../oci.tf => providers/oci/variables.tf} | 0 .../terraform/providers/openstack/config.tf | 0 .../providers/openstack/variables.tf | 0 .../terraform/providers/scaleway/config.tf | 0 .../scaleway/variables.tf} | 0 .../vcluster/config.tf} | 0 .../terraform/providers/vcluster/variables.tf | 9 +++++++++ .../terraform/virtual-machines/aws/config.tf | 2 +- .../virtual-machines/aws/variables.tf | 1 + .../virtual-machines/azure/config.tf | 2 +- .../virtual-machines/azure/variables.tf | 1 + .../virtual-machines/digitalocean/config.tf | 2 +- .../digitalocean/variables.tf | 1 + .../virtual-machines/hetzner/config.tf | 2 +- .../virtual-machines/hetzner/variables.tf | 1 + .../virtual-machines/linode/config.tf | 2 +- .../virtual-machines/linode/variables.tf | 1 + .../terraform/virtual-machines/oci/config.tf | 2 +- .../virtual-machines/oci/variables.tf | 1 + .../virtual-machines/openstack/config.tf | 1 + .../virtual-machines/openstack/variables.tf | 1 + .../virtual-machines/scaleway/config.tf | 2 +- .../virtual-machines/scaleway/variables.tf | 1 + 64 files changed, 118 insertions(+), 105 deletions(-) create mode 120000 prepare-labs/terraform/one-kubernetes/aws/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/civo/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/digitalocean/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/exoscale/variables.tf create mode 100644 prepare-labs/terraform/one-kubernetes/googlecloud/locals.tf mode change 100644 => 120000 prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/linode/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/oci/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/scaleway/variables.tf create mode 120000 prepare-labs/terraform/one-kubernetes/vcluster/variables.tf create mode 100644 prepare-labs/terraform/providers/aws/config.tf rename prepare-labs/terraform/{provider-config/aws.tf => providers/aws/variables.tf} (81%) create mode 100644 prepare-labs/terraform/providers/azure/config.tf rename prepare-labs/terraform/{provider-config/azure.tf => providers/azure/variables.tf} (91%) rename prepare-labs/terraform/{provider-config/civo.tf => providers/civo/config.tf} (53%) create mode 100644 prepare-labs/terraform/providers/civo/variables.tf create mode 100644 prepare-labs/terraform/providers/digitalocean/config.tf rename prepare-labs/terraform/{provider-config/digitalocean.tf => providers/digitalocean/variables.tf} (64%) rename prepare-labs/terraform/{provider-config/exoscale.tf => providers/exoscale/config.tf} (50%) create mode 100644 prepare-labs/terraform/providers/exoscale/variables.tf create mode 100644 prepare-labs/terraform/providers/googlecloud/config.tf rename prepare-labs/terraform/{provider-config/googlecloud.tf => providers/googlecloud/variables.tf} (100%) create mode 100644 prepare-labs/terraform/providers/hetzner/config.tf rename prepare-labs/terraform/{provider-config/hetzner.tf => providers/hetzner/variables.tf} (73%) create mode 100644 prepare-labs/terraform/providers/linode/config.tf rename prepare-labs/terraform/{provider-config/linode.tf => providers/linode/variables.tf} (78%) create mode 100644 prepare-labs/terraform/providers/oci/config.tf rename prepare-labs/terraform/{provider-config/oci.tf => providers/oci/variables.tf} (100%) create mode 100644 prepare-labs/terraform/providers/openstack/config.tf create mode 100644 prepare-labs/terraform/providers/openstack/variables.tf create mode 100644 prepare-labs/terraform/providers/scaleway/config.tf rename prepare-labs/terraform/{provider-config/scaleway.tf => providers/scaleway/variables.tf} (100%) rename prepare-labs/terraform/{provider-config/vcluster.tf => providers/vcluster/config.tf} (100%) create mode 100644 prepare-labs/terraform/providers/vcluster/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/aws/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/azure/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/digitalocean/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/hetzner/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/linode/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/oci/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/openstack/config.tf create mode 120000 prepare-labs/terraform/virtual-machines/openstack/variables.tf create mode 120000 prepare-labs/terraform/virtual-machines/scaleway/variables.tf diff --git a/prepare-labs/README.md b/prepare-labs/README.md index 9c210213..2a18d8b2 100644 --- a/prepare-labs/README.md +++ b/prepare-labs/README.md @@ -120,11 +120,19 @@ Legend: โ”‚ โ”œโ”€โ”€ ๐Ÿ“„common.tf โ”‚ โ”œโ”€โ”€ ๐Ÿ“๐ŸŒdigitalocean โ”‚ โ””โ”€โ”€ ... -โ”œโ”€โ”€ ๐Ÿ“provider-config -โ”‚ โ”œโ”€โ”€ ๐Ÿ“„aws.tf -โ”‚ โ”œโ”€โ”€ ๐Ÿ“„azure.tf -โ”‚ โ”œโ”€โ”€ ๐Ÿ“„civo.tf -โ”‚ โ”œโ”€โ”€ ๐Ÿ“„digitalocean.tf +โ”œโ”€โ”€ ๐Ÿ“providers +โ”‚ โ”œโ”€โ”€ ๐Ÿ“aws +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„config.tf +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„variables.tf +โ”‚ โ”œโ”€โ”€ ๐Ÿ“azure +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„config.tf +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„variables.tf +โ”‚ โ”œโ”€โ”€ ๐Ÿ“civo +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„config.tf +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„variables.tf +โ”‚ โ”œโ”€โ”€ ๐Ÿ“digitalocean +โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„config.tf +โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“„variables.tf โ”‚ โ””โ”€โ”€ ... โ”œโ”€โ”€ ๐Ÿ“tags โ”‚ โ”‚ (contains Terraform configurations + other files @@ -150,7 +158,7 @@ The directory structure can feel a bit overwhelming at first, but it's built wit **Don't repeat yourself.** As much as possible, common variables, definitions, and logic has been factored in the `common.tf` file that you can see in `one-kubernetes` and `virtual-machines`. That file is then symlinked in each provider-specific directory, to make sure that all providers use the same version of the `common.tf` file. -**Don't repeat yourself (again).** The things that are specific to each provider (e.g. how to obtain the credentials; the size of the VMs to use...) have been placed in the `provider-config` directory, and are shared between the `one-kubernetes` and the `virtual-machines` configurations. +**Don't repeat yourself (again).** The things that are specific to each provider have been placed in the `providers` directory, and are shared between the `one-kubernetes` and the `virtual-machines` configurations. Specifically, for each provider, there is `config.tf` (which contains provider configuration, e.g. how to obtain the credentials for that provider) and `variables.tf` (which contains default values like which location and which VM size to use). **Terraform configurations should work in `labctl` or standalone, without extra work.** The Terraform configurations (identified by ๐ŸŒ in the directory tree above) can be used directly. Just go to one of these directories, `terraform init`, `terraform apply`, and you're good to go. But they can also be used from `labctl`. `labctl` shouldn't barf out if you did a `terraform apply` in one of these directories (because it will only copy the `*.tf` files, and leave alone the other files, like the Terraform state). diff --git a/prepare-labs/terraform/many-kubernetes/main.tf b/prepare-labs/terraform/many-kubernetes/main.tf index 30018244..97110d0a 100644 --- a/prepare-labs/terraform/many-kubernetes/main.tf +++ b/prepare-labs/terraform/many-kubernetes/main.tf @@ -4,7 +4,6 @@ module "clusters" { cluster_name = each.value.cluster_name min_nodes_per_pool = local.min_nodes_per_pool max_nodes_per_pool = local.max_nodes_per_pool - enable_arm_pool = var.enable_arm_pool node_size = var.node_size common_tags = local.common_tags location = each.value.location diff --git a/prepare-labs/terraform/many-kubernetes/variables.tf b/prepare-labs/terraform/many-kubernetes/variables.tf index 1dfcda3f..d20a8131 100644 --- a/prepare-labs/terraform/many-kubernetes/variables.tf +++ b/prepare-labs/terraform/many-kubernetes/variables.tf @@ -17,13 +17,8 @@ variable "node_size" { default = "M" } -variable "enable_arm_pool" { - type = bool - default = false -} - variable "location" { - type = string + type = string default = null } diff --git a/prepare-labs/terraform/one-kubernetes/aws/config.tf b/prepare-labs/terraform/one-kubernetes/aws/config.tf index 5675a920..56c28b3a 120000 --- a/prepare-labs/terraform/one-kubernetes/aws/config.tf +++ b/prepare-labs/terraform/one-kubernetes/aws/config.tf @@ -1 +1 @@ -../../provider-config/aws.tf \ No newline at end of file +../../providers/aws/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/aws/variables.tf b/prepare-labs/terraform/one-kubernetes/aws/variables.tf new file mode 120000 index 00000000..542f482d --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/aws/variables.tf @@ -0,0 +1 @@ +../../providers/aws/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/civo/config.tf b/prepare-labs/terraform/one-kubernetes/civo/config.tf index 7bae5c4e..8384d2e6 120000 --- a/prepare-labs/terraform/one-kubernetes/civo/config.tf +++ b/prepare-labs/terraform/one-kubernetes/civo/config.tf @@ -1 +1 @@ -../../provider-config/civo.tf \ No newline at end of file +../../providers/civo/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/civo/provider.tf b/prepare-labs/terraform/one-kubernetes/civo/provider.tf index 70fb1299..18fe8a59 100644 --- a/prepare-labs/terraform/one-kubernetes/civo/provider.tf +++ b/prepare-labs/terraform/one-kubernetes/civo/provider.tf @@ -4,4 +4,4 @@ terraform { source = "civo/civo" } } -} \ No newline at end of file +} diff --git a/prepare-labs/terraform/one-kubernetes/civo/variables.tf b/prepare-labs/terraform/one-kubernetes/civo/variables.tf new file mode 120000 index 00000000..176e6204 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/civo/variables.tf @@ -0,0 +1 @@ +../../providers/civo/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/digitalocean/config.tf b/prepare-labs/terraform/one-kubernetes/digitalocean/config.tf index 81ac877f..c29586b6 120000 --- a/prepare-labs/terraform/one-kubernetes/digitalocean/config.tf +++ b/prepare-labs/terraform/one-kubernetes/digitalocean/config.tf @@ -1 +1 @@ -../../provider-config/digitalocean.tf \ No newline at end of file +../../providers/digitalocean/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/digitalocean/variables.tf b/prepare-labs/terraform/one-kubernetes/digitalocean/variables.tf new file mode 120000 index 00000000..eaceb678 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/digitalocean/variables.tf @@ -0,0 +1 @@ +../../providers/digitalocean/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/exoscale/config.tf b/prepare-labs/terraform/one-kubernetes/exoscale/config.tf index da0d5790..2515bc7c 120000 --- a/prepare-labs/terraform/one-kubernetes/exoscale/config.tf +++ b/prepare-labs/terraform/one-kubernetes/exoscale/config.tf @@ -1 +1 @@ -../../provider-config/exoscale.tf \ No newline at end of file +../../providers/exoscale/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/exoscale/variables.tf b/prepare-labs/terraform/one-kubernetes/exoscale/variables.tf new file mode 120000 index 00000000..dd5ef493 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/exoscale/variables.tf @@ -0,0 +1 @@ +../../providers/exoscale/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/googlecloud/config.tf b/prepare-labs/terraform/one-kubernetes/googlecloud/config.tf index 0c56ef72..a5effb1d 120000 --- a/prepare-labs/terraform/one-kubernetes/googlecloud/config.tf +++ b/prepare-labs/terraform/one-kubernetes/googlecloud/config.tf @@ -1 +1 @@ -../../provider-config/googlecloud.tf \ No newline at end of file +../../providers/googlecloud/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/googlecloud/locals.tf b/prepare-labs/terraform/one-kubernetes/googlecloud/locals.tf new file mode 100644 index 00000000..aeb06c4f --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/googlecloud/locals.tf @@ -0,0 +1,12 @@ +locals { + location = var.location != null ? var.location : "europe-north1-a" + region = replace(local.location, "/-[a-z]$/", "") + # Unfortunately, the following line doesn't work + # (that attribute just returns an empty string) + # so we have to hard-code the project name. + #project = data.google_client_config._.project + project = "prepare-tf" +} + +data "google_client_config" "_" {} + diff --git a/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf b/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf deleted file mode 100644 index aeb06c4f..00000000 --- a/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf +++ /dev/null @@ -1,12 +0,0 @@ -locals { - location = var.location != null ? var.location : "europe-north1-a" - region = replace(local.location, "/-[a-z]$/", "") - # Unfortunately, the following line doesn't work - # (that attribute just returns an empty string) - # so we have to hard-code the project name. - #project = data.google_client_config._.project - project = "prepare-tf" -} - -data "google_client_config" "_" {} - diff --git a/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf b/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf new file mode 120000 index 00000000..0591bcae --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/googlecloud/variables.tf @@ -0,0 +1 @@ +../../providers/googlecloud/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/linode/config.tf b/prepare-labs/terraform/one-kubernetes/linode/config.tf index 3230f225..95e90a29 120000 --- a/prepare-labs/terraform/one-kubernetes/linode/config.tf +++ b/prepare-labs/terraform/one-kubernetes/linode/config.tf @@ -1 +1 @@ -../../provider-config/linode.tf \ No newline at end of file +../../providers/linode/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/linode/variables.tf b/prepare-labs/terraform/one-kubernetes/linode/variables.tf new file mode 120000 index 00000000..c70c8c77 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/linode/variables.tf @@ -0,0 +1 @@ +../../providers/linode/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/oci/config.tf b/prepare-labs/terraform/one-kubernetes/oci/config.tf index 3f448770..eff45c3d 120000 --- a/prepare-labs/terraform/one-kubernetes/oci/config.tf +++ b/prepare-labs/terraform/one-kubernetes/oci/config.tf @@ -1 +1 @@ -../../provider-config/oci.tf \ No newline at end of file +../../providers/oci/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/oci/variables.tf b/prepare-labs/terraform/one-kubernetes/oci/variables.tf new file mode 120000 index 00000000..9e6b3a89 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/oci/variables.tf @@ -0,0 +1 @@ +../../providers/oci/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/scaleway/config.tf b/prepare-labs/terraform/one-kubernetes/scaleway/config.tf index 3ac2b26e..bd8cdb55 120000 --- a/prepare-labs/terraform/one-kubernetes/scaleway/config.tf +++ b/prepare-labs/terraform/one-kubernetes/scaleway/config.tf @@ -1 +1 @@ -../../provider-config/scaleway.tf \ No newline at end of file +../../providers/scaleway/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/scaleway/variables.tf b/prepare-labs/terraform/one-kubernetes/scaleway/variables.tf new file mode 120000 index 00000000..410b4c61 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/scaleway/variables.tf @@ -0,0 +1 @@ +../../providers/scaleway/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/vcluster/config.tf b/prepare-labs/terraform/one-kubernetes/vcluster/config.tf index 4ccf9d5d..2cfb4cb4 120000 --- a/prepare-labs/terraform/one-kubernetes/vcluster/config.tf +++ b/prepare-labs/terraform/one-kubernetes/vcluster/config.tf @@ -1 +1 @@ -../../provider-config/vcluster.tf \ No newline at end of file +../../providers/vcluster/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf b/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf index 7b60ad22..e69de29b 100644 --- a/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf +++ b/prepare-labs/terraform/one-kubernetes/vcluster/provider.tf @@ -1,9 +0,0 @@ -variable "node_sizes" { - type = map(string) - default = {} -} - -variable "location" { - type = string - default = null -} diff --git a/prepare-labs/terraform/one-kubernetes/vcluster/variables.tf b/prepare-labs/terraform/one-kubernetes/vcluster/variables.tf new file mode 120000 index 00000000..9cb3c812 --- /dev/null +++ b/prepare-labs/terraform/one-kubernetes/vcluster/variables.tf @@ -0,0 +1 @@ +../../providers/vcluster/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/providers/aws/config.tf b/prepare-labs/terraform/providers/aws/config.tf new file mode 100644 index 00000000..2fe2c886 --- /dev/null +++ b/prepare-labs/terraform/providers/aws/config.tf @@ -0,0 +1,3 @@ +provider "aws" { + region = var.location +} diff --git a/prepare-labs/terraform/provider-config/aws.tf b/prepare-labs/terraform/providers/aws/variables.tf similarity index 81% rename from prepare-labs/terraform/provider-config/aws.tf rename to prepare-labs/terraform/providers/aws/variables.tf index f67f3b9e..dcaf90b7 100644 --- a/prepare-labs/terraform/provider-config/aws.tf +++ b/prepare-labs/terraform/providers/aws/variables.tf @@ -1,7 +1,3 @@ -provider "aws" { - region = var.location -} - variable "node_sizes" { type = map(any) default = { diff --git a/prepare-labs/terraform/providers/azure/config.tf b/prepare-labs/terraform/providers/azure/config.tf new file mode 100644 index 00000000..ab91b248 --- /dev/null +++ b/prepare-labs/terraform/providers/azure/config.tf @@ -0,0 +1,3 @@ +provider "azurerm" { + features {} +} diff --git a/prepare-labs/terraform/provider-config/azure.tf b/prepare-labs/terraform/providers/azure/variables.tf similarity index 91% rename from prepare-labs/terraform/provider-config/azure.tf rename to prepare-labs/terraform/providers/azure/variables.tf index bf3e8c90..eaf1dcef 100644 --- a/prepare-labs/terraform/provider-config/azure.tf +++ b/prepare-labs/terraform/providers/azure/variables.tf @@ -1,7 +1,3 @@ -provider "azurerm" { - features {} -} - /* Available sizes: "Standard_D11_v2" # CPU=2 RAM=14 diff --git a/prepare-labs/terraform/provider-config/civo.tf b/prepare-labs/terraform/providers/civo/config.tf similarity index 53% rename from prepare-labs/terraform/provider-config/civo.tf rename to prepare-labs/terraform/providers/civo/config.tf index cd8eca65..4a363793 100644 --- a/prepare-labs/terraform/provider-config/civo.tf +++ b/prepare-labs/terraform/providers/civo/config.tf @@ -7,17 +7,3 @@ locals { civo_current = local.civo_config.meta.current_apikey civo_apikey = local.civo_config.apikeys[local.civo_current] } - -variable "node_sizes" { - type = map(any) - default = { - S = "g4s.kube.small" - M = "g4s.kube.medium" - L = "g4s.kube.large" - } -} - -variable "location" { - type = string - default = "lon1" -} diff --git a/prepare-labs/terraform/providers/civo/variables.tf b/prepare-labs/terraform/providers/civo/variables.tf new file mode 100644 index 00000000..c0c7fc5c --- /dev/null +++ b/prepare-labs/terraform/providers/civo/variables.tf @@ -0,0 +1,13 @@ +variable "node_sizes" { + type = map(any) + default = { + S = "g4s.kube.small" + M = "g4s.kube.medium" + L = "g4s.kube.large" + } +} + +variable "location" { + type = string + default = "lon1" +} diff --git a/prepare-labs/terraform/providers/digitalocean/config.tf b/prepare-labs/terraform/providers/digitalocean/config.tf new file mode 100644 index 00000000..8a025010 --- /dev/null +++ b/prepare-labs/terraform/providers/digitalocean/config.tf @@ -0,0 +1,3 @@ +provider "digitalocean" { + token = yamldecode(file("~/.config/doctl/config.yaml"))["access-token"] +} diff --git a/prepare-labs/terraform/provider-config/digitalocean.tf b/prepare-labs/terraform/providers/digitalocean/variables.tf similarity index 64% rename from prepare-labs/terraform/provider-config/digitalocean.tf rename to prepare-labs/terraform/providers/digitalocean/variables.tf index 89ba0e74..e0df8cdd 100644 --- a/prepare-labs/terraform/provider-config/digitalocean.tf +++ b/prepare-labs/terraform/providers/digitalocean/variables.tf @@ -1,7 +1,3 @@ -provider "digitalocean" { - token = yamldecode(file("~/.config/doctl/config.yaml"))["access-token"] -} - variable "node_sizes" { type = map(any) default = { diff --git a/prepare-labs/terraform/provider-config/exoscale.tf b/prepare-labs/terraform/providers/exoscale/config.tf similarity index 50% rename from prepare-labs/terraform/provider-config/exoscale.tf rename to prepare-labs/terraform/providers/exoscale/config.tf index e66d127c..0c0ea00b 100644 --- a/prepare-labs/terraform/provider-config/exoscale.tf +++ b/prepare-labs/terraform/providers/exoscale/config.tf @@ -2,17 +2,3 @@ provider "exoscale" { key = regex("\n key *= *\"([^\"]+)\"\n", file("~/.config/exoscale/exoscale.toml"))[0] secret = regex("\n secret *= *\"([^\"]+)\"\n", file("~/.config/exoscale/exoscale.toml"))[0] } - -variable "node_sizes" { - type = map(any) - default = { - S = "standard.small" - M = "standard.medium" - L = "standard.large" - } -} - -variable "location" { - type = string - default = "ch-gva-2" -} diff --git a/prepare-labs/terraform/providers/exoscale/variables.tf b/prepare-labs/terraform/providers/exoscale/variables.tf new file mode 100644 index 00000000..bfc2d5e2 --- /dev/null +++ b/prepare-labs/terraform/providers/exoscale/variables.tf @@ -0,0 +1,13 @@ +variable "node_sizes" { + type = map(any) + default = { + S = "standard.small" + M = "standard.medium" + L = "standard.large" + } +} + +variable "location" { + type = string + default = "ch-gva-2" +} diff --git a/prepare-labs/terraform/providers/googlecloud/config.tf b/prepare-labs/terraform/providers/googlecloud/config.tf new file mode 100644 index 00000000..e69de29b diff --git a/prepare-labs/terraform/provider-config/googlecloud.tf b/prepare-labs/terraform/providers/googlecloud/variables.tf similarity index 100% rename from prepare-labs/terraform/provider-config/googlecloud.tf rename to prepare-labs/terraform/providers/googlecloud/variables.tf diff --git a/prepare-labs/terraform/providers/hetzner/config.tf b/prepare-labs/terraform/providers/hetzner/config.tf new file mode 100644 index 00000000..709d14eb --- /dev/null +++ b/prepare-labs/terraform/providers/hetzner/config.tf @@ -0,0 +1,9 @@ +/* +Okay, the following is pretty gross - it uses the first token found in the hcloud CLI +configuration file. We don't use Hetzner much anyway, and when we do, we only have one +profile ever, and we want this thing to Just Work; so this should do for now, but might +need to be improved if others actively use Hetzner to provision training labs. +*/ +provider "hcloud" { + token = regex("token = \"([A-Za-z0-9]+)\"", file("~/.config/hcloud/cli.toml"))[0] +} diff --git a/prepare-labs/terraform/provider-config/hetzner.tf b/prepare-labs/terraform/providers/hetzner/variables.tf similarity index 73% rename from prepare-labs/terraform/provider-config/hetzner.tf rename to prepare-labs/terraform/providers/hetzner/variables.tf index 2166ea09..46dd1c67 100644 --- a/prepare-labs/terraform/provider-config/hetzner.tf +++ b/prepare-labs/terraform/providers/hetzner/variables.tf @@ -1,13 +1,3 @@ -/* -Okay, the following is pretty gross - it uses the first token found in the hcloud CLI -configuration file. We don't use Hetzner much anyway, and when we do, we only have one -profile ever, and we want this thing to Just Work; so this should do for now, but might -need to be improved if others actively use Hetzner to provision training labs. -*/ -provider "hcloud" { - token = regex("token = \"([A-Za-z0-9]+)\"", file("~/.config/hcloud/cli.toml"))[0] -} - /* $ hcloud server-type list | grep shared 1 cx11 1 shared 2.0 GB 20 GB local diff --git a/prepare-labs/terraform/providers/linode/config.tf b/prepare-labs/terraform/providers/linode/config.tf new file mode 100644 index 00000000..67ccfb5e --- /dev/null +++ b/prepare-labs/terraform/providers/linode/config.tf @@ -0,0 +1,3 @@ +provider "linode" { + token = regex("\ntoken *= *([0-9a-f]+)\n", file("~/.config/linode-cli"))[0] +} diff --git a/prepare-labs/terraform/provider-config/linode.tf b/prepare-labs/terraform/providers/linode/variables.tf similarity index 78% rename from prepare-labs/terraform/provider-config/linode.tf rename to prepare-labs/terraform/providers/linode/variables.tf index c3f35065..6de41014 100644 --- a/prepare-labs/terraform/provider-config/linode.tf +++ b/prepare-labs/terraform/providers/linode/variables.tf @@ -1,7 +1,3 @@ -provider "linode" { - token = regex("\ntoken *= *([0-9a-f]+)\n", file("~/.config/linode-cli"))[0] -} - /* Available sizes: "g6-standard-1" # CPU=1 RAM=2 diff --git a/prepare-labs/terraform/providers/oci/config.tf b/prepare-labs/terraform/providers/oci/config.tf new file mode 100644 index 00000000..e69de29b diff --git a/prepare-labs/terraform/provider-config/oci.tf b/prepare-labs/terraform/providers/oci/variables.tf similarity index 100% rename from prepare-labs/terraform/provider-config/oci.tf rename to prepare-labs/terraform/providers/oci/variables.tf diff --git a/prepare-labs/terraform/providers/openstack/config.tf b/prepare-labs/terraform/providers/openstack/config.tf new file mode 100644 index 00000000..e69de29b diff --git a/prepare-labs/terraform/providers/openstack/variables.tf b/prepare-labs/terraform/providers/openstack/variables.tf new file mode 100644 index 00000000..e69de29b diff --git a/prepare-labs/terraform/providers/scaleway/config.tf b/prepare-labs/terraform/providers/scaleway/config.tf new file mode 100644 index 00000000..e69de29b diff --git a/prepare-labs/terraform/provider-config/scaleway.tf b/prepare-labs/terraform/providers/scaleway/variables.tf similarity index 100% rename from prepare-labs/terraform/provider-config/scaleway.tf rename to prepare-labs/terraform/providers/scaleway/variables.tf diff --git a/prepare-labs/terraform/provider-config/vcluster.tf b/prepare-labs/terraform/providers/vcluster/config.tf similarity index 100% rename from prepare-labs/terraform/provider-config/vcluster.tf rename to prepare-labs/terraform/providers/vcluster/config.tf diff --git a/prepare-labs/terraform/providers/vcluster/variables.tf b/prepare-labs/terraform/providers/vcluster/variables.tf new file mode 100644 index 00000000..da95df2b --- /dev/null +++ b/prepare-labs/terraform/providers/vcluster/variables.tf @@ -0,0 +1,9 @@ +variable "node_sizes" { + type = map(any) + default = {} +} + +variable "location" { + type = string + default = null +} diff --git a/prepare-labs/terraform/virtual-machines/aws/config.tf b/prepare-labs/terraform/virtual-machines/aws/config.tf index 5675a920..56c28b3a 120000 --- a/prepare-labs/terraform/virtual-machines/aws/config.tf +++ b/prepare-labs/terraform/virtual-machines/aws/config.tf @@ -1 +1 @@ -../../provider-config/aws.tf \ No newline at end of file +../../providers/aws/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/aws/variables.tf b/prepare-labs/terraform/virtual-machines/aws/variables.tf new file mode 120000 index 00000000..542f482d --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/aws/variables.tf @@ -0,0 +1 @@ +../../providers/aws/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/azure/config.tf b/prepare-labs/terraform/virtual-machines/azure/config.tf index e9e39b2c..433a46b4 120000 --- a/prepare-labs/terraform/virtual-machines/azure/config.tf +++ b/prepare-labs/terraform/virtual-machines/azure/config.tf @@ -1 +1 @@ -../../provider-config/azure.tf \ No newline at end of file +../../providers/azure/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/azure/variables.tf b/prepare-labs/terraform/virtual-machines/azure/variables.tf new file mode 120000 index 00000000..dea0b884 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/azure/variables.tf @@ -0,0 +1 @@ +../../providers/azure/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/digitalocean/config.tf b/prepare-labs/terraform/virtual-machines/digitalocean/config.tf index 81ac877f..c29586b6 120000 --- a/prepare-labs/terraform/virtual-machines/digitalocean/config.tf +++ b/prepare-labs/terraform/virtual-machines/digitalocean/config.tf @@ -1 +1 @@ -../../provider-config/digitalocean.tf \ No newline at end of file +../../providers/digitalocean/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/digitalocean/variables.tf b/prepare-labs/terraform/virtual-machines/digitalocean/variables.tf new file mode 120000 index 00000000..eaceb678 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/digitalocean/variables.tf @@ -0,0 +1 @@ +../../providers/digitalocean/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/hetzner/config.tf b/prepare-labs/terraform/virtual-machines/hetzner/config.tf index 36276b33..8fe523c4 120000 --- a/prepare-labs/terraform/virtual-machines/hetzner/config.tf +++ b/prepare-labs/terraform/virtual-machines/hetzner/config.tf @@ -1 +1 @@ -../../provider-config/hetzner.tf \ No newline at end of file +../../providers/hetzner/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/hetzner/variables.tf b/prepare-labs/terraform/virtual-machines/hetzner/variables.tf new file mode 120000 index 00000000..c96d4b65 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/hetzner/variables.tf @@ -0,0 +1 @@ +../../providers/hetzner/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/linode/config.tf b/prepare-labs/terraform/virtual-machines/linode/config.tf index 3230f225..95e90a29 120000 --- a/prepare-labs/terraform/virtual-machines/linode/config.tf +++ b/prepare-labs/terraform/virtual-machines/linode/config.tf @@ -1 +1 @@ -../../provider-config/linode.tf \ No newline at end of file +../../providers/linode/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/linode/variables.tf b/prepare-labs/terraform/virtual-machines/linode/variables.tf new file mode 120000 index 00000000..c70c8c77 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/linode/variables.tf @@ -0,0 +1 @@ +../../providers/linode/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/oci/config.tf b/prepare-labs/terraform/virtual-machines/oci/config.tf index 3f448770..eff45c3d 120000 --- a/prepare-labs/terraform/virtual-machines/oci/config.tf +++ b/prepare-labs/terraform/virtual-machines/oci/config.tf @@ -1 +1 @@ -../../provider-config/oci.tf \ No newline at end of file +../../providers/oci/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/oci/variables.tf b/prepare-labs/terraform/virtual-machines/oci/variables.tf new file mode 120000 index 00000000..9e6b3a89 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/oci/variables.tf @@ -0,0 +1 @@ +../../providers/oci/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/openstack/config.tf b/prepare-labs/terraform/virtual-machines/openstack/config.tf new file mode 120000 index 00000000..8f7d7df1 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/openstack/config.tf @@ -0,0 +1 @@ +../../providers/openstack/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/openstack/variables.tf b/prepare-labs/terraform/virtual-machines/openstack/variables.tf new file mode 120000 index 00000000..0c0f8a96 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/openstack/variables.tf @@ -0,0 +1 @@ +../../providers/openstack/variables.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/scaleway/config.tf b/prepare-labs/terraform/virtual-machines/scaleway/config.tf index 3ac2b26e..bd8cdb55 120000 --- a/prepare-labs/terraform/virtual-machines/scaleway/config.tf +++ b/prepare-labs/terraform/virtual-machines/scaleway/config.tf @@ -1 +1 @@ -../../provider-config/scaleway.tf \ No newline at end of file +../../providers/scaleway/config.tf \ No newline at end of file diff --git a/prepare-labs/terraform/virtual-machines/scaleway/variables.tf b/prepare-labs/terraform/virtual-machines/scaleway/variables.tf new file mode 120000 index 00000000..410b4c61 --- /dev/null +++ b/prepare-labs/terraform/virtual-machines/scaleway/variables.tf @@ -0,0 +1 @@ +../../providers/scaleway/variables.tf \ No newline at end of file