From 6bbcd55bb465489cc3591041d2cbedf7d72caf21 Mon Sep 17 00:00:00 2001 From: Tony Du Date: Tue, 11 Feb 2025 22:12:57 -0800 Subject: [PATCH] chore: Reorganize terraform --- ansible/jumper.yml | 2 + ansible/roles/docker/tasks/main.yml | 3 +- .../compose/bind9/config/home.mnke.org.zone | 17 +++ docker/compose/bind9/config/named.conf | 17 +++ docker/compose/bind9/docker-compose.yaml | 17 +++ docker/compose/gitea/docker-compose.yml | 1 + docker/compose/media/docker-compose.yml | 2 +- docker/compose/traefik/docker-compose.yml | 3 + .../configs/flux/discord-alert.yaml | 10 +- tf/backend.tf | 20 ---- tf/cloud-init.tf | 44 ++++++++ tf/dns-server.tf | 3 +- tf/dns.tf | 6 + tf/docker-swarm.tf | 3 +- tf/huts.tf | 82 +++++++++++++- tf/k8s.tf | 10 +- tf/modules/dns-server/main.tf | 34 +++--- tf/modules/dns-server/variables.tf | 15 ++- tf/modules/docker-swarm/main.tf | 70 ++++++------ tf/modules/docker-swarm/variables.tf | 7 +- tf/modules/k8s/main.tf | 105 +++++++++--------- tf/modules/k8s/variables.tf | 7 +- tf/pools.tf | 1 + tf/providers.tf | 32 ++++++ tf/variables.tf | 11 ++ tf/vars.auto.tfvars | 4 +- 26 files changed, 383 insertions(+), 143 deletions(-) create mode 100644 docker/compose/bind9/config/home.mnke.org.zone create mode 100644 docker/compose/bind9/config/named.conf create mode 100644 docker/compose/bind9/docker-compose.yaml delete mode 100644 tf/backend.tf create mode 100644 tf/dns.tf diff --git a/ansible/jumper.yml b/ansible/jumper.yml index 25132a8..24b2305 100644 --- a/ansible/jumper.yml +++ b/ansible/jumper.yml @@ -2,6 +2,7 @@ - name: Install hosts: jumper remote_user: ubuntu + serial: 1 vars: pv_disks: - /dev/sda @@ -12,6 +13,7 @@ mount_path: /mnt/docker extra_docker_daemon_options: | "data-root": "/mnt/docker/docker-root", + "dns": ["10.0.123.123"], tasks: - import_role: name=dns-client diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 7ed9fa5..d290ad0 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -22,8 +22,7 @@ "base": "172.168.0.0/16", "size": 24 } - ], - "dns": ["10.0.123.123"] + ] } dest: /etc/docker/daemon.json register: docker_daemon_conf diff --git a/docker/compose/bind9/config/home.mnke.org.zone b/docker/compose/bind9/config/home.mnke.org.zone new file mode 100644 index 0000000..c1d619b --- /dev/null +++ b/docker/compose/bind9/config/home.mnke.org.zone @@ -0,0 +1,17 @@ +$ORIGIN home.mnke.org. +@ 900 IN SOA ns.home.mnke.org. info.mnke.org. ( + 5 ; serial + 900 ; refresh + 300 ; retry + 604800 ; expire + 900 ; minimum ttl +) +@ 3600 IN NS ns.home.mnke.org. +ns 3600 IN A 10.0.4.4 + + +truenas 600 IN A 10.0.0.160 +nas 600 IN CNAME truenas +db 600 IN CNAME truenas + +truenas-gpu 600 IN A 10.0.0.250 diff --git a/docker/compose/bind9/config/named.conf b/docker/compose/bind9/config/named.conf new file mode 100644 index 0000000..2958551 --- /dev/null +++ b/docker/compose/bind9/config/named.conf @@ -0,0 +1,17 @@ +acl internal { + 10.0.0.0/16; + 127.0.0.1; +}; + +options { + forwarders { + 1.0.0.1; + 1.1.1.1; + }; + allow-query { internal; }; +}; + +zone "home.mnke.org" IN { + type master; + file "/etc/bind/home.mnke.org.zone"; +}; diff --git a/docker/compose/bind9/docker-compose.yaml b/docker/compose/bind9/docker-compose.yaml new file mode 100644 index 0000000..09f7836 --- /dev/null +++ b/docker/compose/bind9/docker-compose.yaml @@ -0,0 +1,17 @@ +--- + +services: + bind9: + container_name: bind9 + image: ubuntu/bind9:9.18-22.04_beta + environment: + - BIND9_USER=root + - TZ=America/Vancouver + ports: + - 53:53/tcp + - 53:53/udp + volumes: + - ./config:/etc/bind + - ./cache:/var/cache/bind + - ./records:/var/lib/bind + restart: unless-stopped diff --git a/docker/compose/gitea/docker-compose.yml b/docker/compose/gitea/docker-compose.yml index 8854caf..ec421a6 100644 --- a/docker/compose/gitea/docker-compose.yml +++ b/docker/compose/gitea/docker-compose.yml @@ -10,6 +10,7 @@ services: gitea: image: docker.io/gitea/gitea:1.23.1 container_name: gitea + restart: unless-stopped environment: - USER_UID=1002 - USER_GID=1002 diff --git a/docker/compose/media/docker-compose.yml b/docker/compose/media/docker-compose.yml index 9f662af..e94d4d5 100644 --- a/docker/compose/media/docker-compose.yml +++ b/docker/compose/media/docker-compose.yml @@ -176,7 +176,7 @@ services: resources: limits: cpus: '0.25' - memory: 256M + memory: 512M reservations: cpus: '0.1' memory: 64M diff --git a/docker/compose/traefik/docker-compose.yml b/docker/compose/traefik/docker-compose.yml index 4ccbe0f..0c69ab2 100644 --- a/docker/compose/traefik/docker-compose.yml +++ b/docker/compose/traefik/docker-compose.yml @@ -8,6 +8,7 @@ services: traefik: image: traefik:v3.3 container_name: traefik + restart: unless-stopped # This seems to be needed to solve the DNS challenge. Otherwise our own # DNS server is used, which isn't correctly configured to allow checking # the DNS entries have been propagated @@ -62,6 +63,8 @@ services: whoami: image: "traefik/whoami" + container_name: whoami + restart: unless-stopped networks: - traefik labels: diff --git a/k8s/infrastructure/configs/flux/discord-alert.yaml b/k8s/infrastructure/configs/flux/discord-alert.yaml index d316e22..63bc8f2 100644 --- a/k8s/infrastructure/configs/flux/discord-alert.yaml +++ b/k8s/infrastructure/configs/flux/discord-alert.yaml @@ -32,7 +32,7 @@ spec: apiVersion: notification.toolkit.fluxcd.io/v1beta3 kind: Alert metadata: - name: on-call-webapp + name: alerts namespace: flux-system spec: summary: "cluster addons" @@ -47,5 +47,9 @@ spec: name: '*' - kind: Kustomization name: '*' - - + # - kind: HelmRelease + # name: '*' + exclusionList: + # These are so noisy + - "*HelmRepository/flux-system/prometheus-community configured*" + - "*HelmRepository/flux-system/traefik configured*" diff --git a/tf/backend.tf b/tf/backend.tf deleted file mode 100644 index 8c4513e..0000000 --- a/tf/backend.tf +++ /dev/null @@ -1,20 +0,0 @@ -terraform { - backend "s3" { - bucket = "tfstate" - - endpoints = { - s3 = var.s3_backend_endpoint - } - - key = "homelab.tfstate" - access_key = var.s3_access_key - secret_key = var.s3_secret_key - - region = "main" # Region validation will be skipped - skip_credentials_validation = true # Skip AWS related checks and validations - skip_requesting_account_id = true - skip_metadata_api_check = true - skip_region_validation = true - use_path_style = true # Enable path-style S3 URLs (https:/// https://developer.hashicorp.com/terraform/language/settings/backends/s3#use_path_style - } -} diff --git a/tf/cloud-init.tf b/tf/cloud-init.tf index 60927bf..1080ff2 100644 --- a/tf/cloud-init.tf +++ b/tf/cloud-init.tf @@ -38,3 +38,47 @@ power_state: condition: true EOF } + +resource "proxmox_virtual_environment_file" "common_cloud_init" { + content_type = "snippets" + datastore_id = var.proxmox_image_storage + node_name = "pve" + + source_raw { + data = <