From db93daf5f6882cfd72aac14a9136059ffe279e18 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Fri, 29 Sep 2023 18:03:59 +0200
Subject: [PATCH] feat(terraform): Upgrade to Fedora 38

---
 terraform/k8s01/.terraform.lock.hcl      | 36 ++++++-------
 terraform/k8s01/main.tf                  |  9 +++-
 terraform/k8s01/templates/cloud-init.tpl | 66 +++++++++++++++++++++++-
 terraform/k8s01/variables.tf             | 19 +++++++
 4 files changed, 108 insertions(+), 22 deletions(-)

diff --git a/terraform/k8s01/.terraform.lock.hcl b/terraform/k8s01/.terraform.lock.hcl
index c8818c663..f4676835f 100644
--- a/terraform/k8s01/.terraform.lock.hcl
+++ b/terraform/k8s01/.terraform.lock.hcl
@@ -1,26 +1,26 @@
-# This file is maintained automatically by "opentf init".
+# This file is maintained automatically by "terraform init".
 # Manual edits may be lost in future updates.
 
 provider "registry.terraform.io/cloudflare/cloudflare" {
-  version     = "4.12.0"
-  constraints = "4.12.0"
+  version     = "4.15.0"
+  constraints = "4.15.0"
   hashes = [
-    "h1:TgaRIjC8f5N3NgNNBlDLV3FeVObUu8auG8Fhh2zfVGQ=",
-    "zh:1b0f11752b5e7539c9fc8f1dcea9ed01f5f4d71771999f50bcd238c35e99dc70",
-    "zh:2aae0370edea7e75ab5d128b75140c006b5ace22fc819735aa62ddcedc046169",
-    "zh:2ff3010ac107f055993db99d0879c069ee0f933a77383ac850d6be044be70e3f",
-    "zh:45f06373e18ace5a5c3a4bc23fc93a163bc11987b01125870f1abe859a964e8d",
-    "zh:5711e328cbd42c49ab9768d2127460001d398b00eb67185dbf7c5dd49f76c549",
-    "zh:5bd83bee6c2af907c4c75a5a0aaaebf908b6360629b80c2b80c3adebff8bc1ae",
-    "zh:6591310951011ab429f787df2a2ec904c471c1b5b078195e385bb31297a5c02c",
-    "zh:6fdac08b84b0a6e1ed52d1268aef0afbff6d0704e2188d928ce89e753643040c",
+    "h1:9SNRwKgXYFbef9ODbFcGMvHAzNwpsr29lqbwgttUNGU=",
+    "zh:12e7678cab172746b3acac66cd280a99a9b12a9af21c2a063242cf53c2c49f25",
+    "zh:13e7086f3c444fe58b8495ecfd3c6cef8a200e5d91e758b833c7991a4b782605",
+    "zh:22bf57720c93c4c6e5a052719977d34b4cfeb6930a05b0ccd8e13562c45c1acc",
+    "zh:371b5e5fc7f958f3698add96b45fd059b82c7412084113cac8e4ded27568959c",
+    "zh:376bc20158e4823b1ce28084167385f00d3e5e8419e499be2ddb1b9f0e2d677a",
+    "zh:6d3ffb50f54275926fe4fb82b56439b36eb9cac266a74f7c2eb46e13c0b9450a",
+    "zh:726ad74feb174d9f03433fc77e8ec8690371fbe891c4d980f9db6382e790145b",
+    "zh:7572aaf85d3687fbac623f7c28aa27f22e827a39ebbf8e482f712a43f49de054",
+    "zh:8494fdbbdec365b6d04b8dd23dcaaba1038030af5496f10df3f73efdad257a3d",
     "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
-    "zh:89a6fe1e4351186db6f9fbb36eb4510bcbc84c983fa2b160e938396440920c52",
-    "zh:89ee2382b4ee18445a848715469c9c8963a65b56f1373382b77968975926b0a3",
-    "zh:8f66a3a135761839d53176efca4f3139449e34f1ce542c2a565ce1b22309a90b",
-    "zh:923b784179cbb1580984ec364865ea9edc21baffb5b328215f7c0a5740f8ba60",
-    "zh:cdeb63e3704bbdcfd8feb533ba72ec4f278a2871c59a363447e783e04e6c6414",
-    "zh:df84a3fcdb71b75820f4f1da324c0be611a9b910dd005400f02f07caed69f073",
+    "zh:8972f77c222e43f81512382149786c229a68de1f428ad27c1f7052886e1faea7",
+    "zh:8eda83189beb5c6f220c97b49e683990447a020816aa71472077bbc1f48aab57",
+    "zh:ab2be9910ce3f9a8a7eeeb6ba89fe60f933a9303925cac7ee41e3de764803fe6",
+    "zh:bf8e782797ad63b6101a05707d976980c66cce846fac89d9017cba14fe0c14b2",
+    "zh:ef8352c6bff9845fd498be018a70c67a61f22e7c4cc7c1e1e5e880e0f2d9dfd7",
   ]
 }
 
diff --git a/terraform/k8s01/main.tf b/terraform/k8s01/main.tf
index 667ce1058..1083c0d54 100644
--- a/terraform/k8s01/main.tf
+++ b/terraform/k8s01/main.tf
@@ -6,8 +6,13 @@ module "gw" {
   dns_domain     = var.dns_domain
   dns_zone_id    = var.dns_zone_id
   dns_record_aaaa = false
-  image          = "fedora-37"
-  user_data      = templatefile("templates/cloud-init.tpl", {netbird_key = "${var.netbird_key}"})
+  image          = "fedora-38"
+  user_data      = templatefile("templates/cloud-init.tpl", {
+                      netbird_key = var.netbird_key,
+                      netbird_sshkey = var.netbird_sshkey,
+                      netbird_privatekey = var.netbird_privatekey,
+                      netbird_presharedkey = var.netbird_presharedkey
+                    })
   ssh_keys       = data.hcloud_ssh_keys.all_keys.ssh_keys.*.name
   server_type    = "cx11"
   labels         = {
diff --git a/terraform/k8s01/templates/cloud-init.tpl b/terraform/k8s01/templates/cloud-init.tpl
index ffab6aff7..683e6ee44 100644
--- a/terraform/k8s01/templates/cloud-init.tpl
+++ b/terraform/k8s01/templates/cloud-init.tpl
@@ -16,7 +16,69 @@ EOF
 
 dnf install -y netbird
 
+%{ if netbird_privatekey != "" }
+mkdir -p /etc/netbird/
+cat > /etc/netbird/config.json <<EOF
+{
+    "PrivateKey": "${netbird_privatekey}",
+    "PreSharedKey": "${netbird_presharedkey}",
+    "ManagementURL": {
+        "Scheme": "https",
+        "Opaque": "",
+        "User": null,
+        "Host": "api.wiretrustee.com:443",
+        "Path": "",
+        "RawPath": "",
+        "OmitHost": false,
+        "ForceQuery": false,
+        "RawQuery": "",
+        "Fragment": "",
+        "RawFragment": ""
+    },
+    "AdminURL": {
+        "Scheme": "https",
+        "Opaque": "",
+        "User": null,
+        "Host": "app.netbird.io",
+        "Path": "",
+        "RawPath": "",
+        "OmitHost": false,
+        "ForceQuery": false,
+        "RawQuery": "",
+        "Fragment": "",
+        "RawFragment": ""
+    },
+    "WgIface": "wt0",
+    "WgPort": 51820,
+    "IFaceBlackList": [
+        "wt0",
+        "wt",
+        "utun",
+        "tun0",
+        "zt",
+        "ZeroTier",
+        "utun",
+        "wg",
+        "ts",
+        "Tailscale",
+        "tailscale",
+        "docker",
+        "veth",
+        "br-"
+    ],
+    "DisableIPv6Discovery": false,
+    "SSHKey": "${netbird_sshkey}",
+    "SSHKey": "",
+    "NATExternalIPs": null,
+    "CustomDNSAddress": ""
+}
+EOF
+
+systemctl enable --now netbird
+%{ else }
 netbird up --setup-key ${netbird_key}
+%{ endif }
+
 
 # Install and configure HAProxy
 dnf install -y haproxy
@@ -41,7 +103,7 @@ listen l1
     timeout connect  4s
     timeout client   180s
     timeout server   180s
-    server srv1-http ingress.k8s01.si-infra.de:80 check inter 5s send-proxy-v2
+    server srv1-http ingress-proxy-protocol.k8s01.si-infra.de:80 check inter 5s send-proxy-v2
 listen l2
     bind 0.0.0.0:443
     bind :::443
@@ -49,7 +111,7 @@ listen l2
     timeout connect  4s
     timeout client   180s
     timeout server   180s
-    server srv1-https ingress.k8s01.si-infra.de:443 check inter 5s send-proxy-v2
+    server srv1-https ingress-proxy-protocol.k8s01.si-infra.de:443 check inter 5s send-proxy-v2
 listen submissions
     bind 0.0.0.0:465
     bind :::465
diff --git a/terraform/k8s01/variables.tf b/terraform/k8s01/variables.tf
index a11edbaeb..174a65725 100644
--- a/terraform/k8s01/variables.tf
+++ b/terraform/k8s01/variables.tf
@@ -30,4 +30,23 @@ variable "location" {
 variable "netbird_key" {
   type        = string
   description = "NetBird activation key"
+  sensitive = true
+}
+
+variable "netbird_privatekey" {
+  type        = string
+  description = "NetBird private key for keeping the netbird identity"
+  sensitive = true
+}
+
+variable "netbird_presharedkey" {
+  type        = string
+  description = "NetBird preshared key, to limit trust of netbird infrastructure"
+  sensitive = true
+}
+
+variable "netbird_sshkey" {
+  type        = string
+  description = "NetBird ssh key, because it seems to be needed."
+  sensitive = true
 }
\ No newline at end of file
-- 
GitLab