From 64354376c77ceeddbc36ce1aa8a555f3750fae9d Mon Sep 17 00:00:00 2001 From: arcnmx Date: Thu, 21 Mar 2024 08:19:43 -0700 Subject: [PATCH] feat(utsuho): new host --- ci/nix.nix | 1 + docs/network.adoc | 1 + systems/utsuho/default.nix | 7 ++++ systems/utsuho/lxc.json | 21 +++++++++++ systems/utsuho/nixos.nix | 21 +++++++++++ tf/cloudflare_records.tf | 9 +++++ tf/cloudflare_tunnels.tf | 28 ++++++++++++++ tf/proxmox_vms.tf | 77 +++++++++++++++++++++++++++++++++++++- tf/terraform.tfvars.sops | 6 +-- 9 files changed, 167 insertions(+), 4 deletions(-) create mode 100644 systems/utsuho/default.nix create mode 100644 systems/utsuho/lxc.json create mode 100644 systems/utsuho/nixos.nix diff --git a/ci/nix.nix b/ci/nix.nix index 86e73e19..e0b75f01 100644 --- a/ci/nix.nix +++ b/ci/nix.nix @@ -8,6 +8,7 @@ "hakurei" "reimu" "aya" + "utsuho" "tei" "litterbox" "keycloak" diff --git a/docs/network.adoc b/docs/network.adoc index 1412a039..29797bd5 100644 --- a/docs/network.adoc +++ b/docs/network.adoc @@ -19,6 +19,7 @@ shanghai:: `10.1.1.32` hourai:: `10.1.1.36` +utsuho:: `10.1.1.38` tei:: `10.1.1.39` reisen:: `10.1.1.40` hakurei:: `10.1.1.41` diff --git a/systems/utsuho/default.nix b/systems/utsuho/default.nix new file mode 100644 index 00000000..ea396fa3 --- /dev/null +++ b/systems/utsuho/default.nix @@ -0,0 +1,7 @@ +_: { + arch = "x86_64"; + type = "NixOS"; + modules = [ + ./nixos.nix + ]; +} diff --git a/systems/utsuho/lxc.json b/systems/utsuho/lxc.json new file mode 100644 index 00000000..85c5e6c9 --- /dev/null +++ b/systems/utsuho/lxc.json @@ -0,0 +1,21 @@ +{ + "lxc": { + "lxc.mount.entry": [ + "/rpool/shared/unifi mnt/shared/unifi none bind,optional,create=dir", + "/rpool/shared/postgresql mnt/shared/postgresql none bind,optional,create=dir", + "/dev/net/tun dev/net/tun none bind,optional,create=file" + ], + "lxc.idmap": [ + "u 0 100000 8000", + "g 0 100000 8000", + "u 8000 8000 128", + "g 8000 8000 256", + "u 8128 108128 57406", + "g 8256 108256 57278", + "u 65534 65534 1", + "g 65534 65534 1", + "u 65535 165535 1", + "g 65535 165535 1" + ] + } +} diff --git a/systems/utsuho/nixos.nix b/systems/utsuho/nixos.nix new file mode 100644 index 00000000..1dd3ec1f --- /dev/null +++ b/systems/utsuho/nixos.nix @@ -0,0 +1,21 @@ +{meta, config, ...}: { + imports = let + inherit (meta) nixos; + in [ + nixos.base + nixos.reisen-ct + ]; + + systemd.network.networks.eth0 = { + name = "eth0"; + matchConfig = { + MACAddress = "BC:24:11:C4:66:A6"; + Type = "ether"; + }; + address = ["10.1.1.38/24"]; + gateway = ["10.1.1.1"]; + DHCP = "no"; + }; + + system.stateVersion = "23.11"; +} diff --git a/tf/cloudflare_records.tf b/tf/cloudflare_records.tf index 8ebc91ff..081b2a22 100644 --- a/tf/cloudflare_records.tf +++ b/tf/cloudflare_records.tf @@ -65,6 +65,15 @@ module "keycloak_system_records" { local_v6 = "fd0a::be24:11ff:fec4:66ac" } +module "utsuho_system_records" { + source = "./system/records" + name = "utsuho" + zone_id = cloudflare_zone.gensokyo-zone_zone.id + zone_zone = cloudflare_zone.gensokyo-zone_zone.zone + local_v4 = "10.1.1.38" + local_v6 = "fd0a::be24:11ff:fec4:66a6" +} + module "aya_system_records" { source = "./system/records" name = "aya" diff --git a/tf/cloudflare_tunnels.tf b/tf/cloudflare_tunnels.tf index a0b40596..f5b5eb21 100644 --- a/tf/cloudflare_tunnels.tf +++ b/tf/cloudflare_tunnels.tf @@ -58,6 +58,34 @@ output "cloudflare_tunnel_cname_keycloak" { value = module.keycloak.cname } +variable "cloudflare_tunnel_secret_utsuho" { + type = string + sensitive = true +} + +module "utsuho" { + source = "./tunnel" + name = "utsuho" + secret = var.cloudflare_tunnel_secret_utsuho + account_id = var.cloudflare_account_id + zone_id = cloudflare_zone.gensokyo-zone_zone.id + subdomains = [ + ] +} + +output "cloudflare_tunnel_id_utsuho" { + value = module.utsuho.id +} + +output "cloudflare_tunnel_token_utsuho" { + value = module.utsuho.token + sensitive = true +} + +output "cloudflare_tunnel_cname_utsuho" { + value = module.utsuho.cname +} + variable "cloudflare_tunnel_secret_tewi" { type = string sensitive = true diff --git a/tf/proxmox_vms.tf b/tf/proxmox_vms.tf index 29fb9828..30372d14 100644 --- a/tf/proxmox_vms.tf +++ b/tf/proxmox_vms.tf @@ -1,9 +1,11 @@ variable "proxmox_container_template" { type = string - default = "local:vztmpl/ct-20240211-nixos-system-x86_64-linux.tar.xz" + default = "local:vztmpl/ct-20240319-nixos-system-x86_64-linux.tar.xz" } locals { + proxmox_utsuho_vm_id = 108 + proxmox_utsuho_config = jsondecode(file("${path.root}/../systems/utsuho/lxc.json")) proxmox_keycloak_vm_id = 107 proxmox_keycloak_config = jsondecode(file("${path.root}/../systems/keycloak/lxc.json")) proxmox_litterbox_vm_id = 106 @@ -330,6 +332,79 @@ module "aya_config" { config = local.proxmox_aya_config.lxc } +resource "proxmox_virtual_environment_container" "utsuho" { + node_name = "reisen" + vm_id = local.proxmox_utsuho_vm_id + tags = ["tf"] + description = <