Require inventory values for edge wiring
This commit is contained in:
parent
ae84c3d259
commit
0544dba9f5
|
|
@ -1,6 +1,11 @@
|
|||
variable "edge_host" {
|
||||
type = string
|
||||
default = "132.145.170.74"
|
||||
default = ""
|
||||
|
||||
validation {
|
||||
condition = var.edge_host != ""
|
||||
error_message = "edge_host must be provided from homelab.yml through jeannie or an explicit tfvars/env value."
|
||||
}
|
||||
}
|
||||
|
||||
variable "edge_user" {
|
||||
|
|
@ -25,19 +30,17 @@ variable "edge_install_docker" {
|
|||
|
||||
variable "server_name" {
|
||||
type = string
|
||||
default = "lab2025.duckdns.org"
|
||||
default = ""
|
||||
|
||||
validation {
|
||||
condition = var.server_name != ""
|
||||
error_message = "server_name must be provided from homelab.yml through jeannie or an explicit tfvars/env value."
|
||||
}
|
||||
}
|
||||
|
||||
variable "additional_server_names" {
|
||||
type = list(string)
|
||||
default = [
|
||||
"demos.lab2025.duckdns.org",
|
||||
"heimdall.lab2025.duckdns.org",
|
||||
"grafana.lab2025.duckdns.org",
|
||||
"prometheus.lab2025.duckdns.org",
|
||||
"alertmanager.lab2025.duckdns.org",
|
||||
"argocd.lab2025.duckdns.org",
|
||||
]
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "enable_letsencrypt" {
|
||||
|
|
@ -57,7 +60,12 @@ variable "letsencrypt_staging" {
|
|||
|
||||
variable "backend_host" {
|
||||
type = string
|
||||
default = "192.168.100.240"
|
||||
default = ""
|
||||
|
||||
validation {
|
||||
condition = var.backend_host != ""
|
||||
error_message = "backend_host must be provided from homelab.yml through jeannie or an explicit tfvars/env value."
|
||||
}
|
||||
}
|
||||
|
||||
variable "backend_port" {
|
||||
|
|
@ -77,7 +85,12 @@ variable "gitea_backend_port" {
|
|||
|
||||
variable "gitea_backend_host" {
|
||||
type = string
|
||||
default = "100.85.138.30"
|
||||
default = ""
|
||||
|
||||
validation {
|
||||
condition = var.gitea_backend_host != ""
|
||||
error_message = "gitea_backend_host must be provided from homelab.yml through jeannie or an explicit tfvars/env value."
|
||||
}
|
||||
}
|
||||
|
||||
variable "haproxy_stats_user" {
|
||||
|
|
|
|||
60
jeannie
60
jeannie
|
|
@ -29,6 +29,7 @@ load_homelab_inventory_defaults() {
|
|||
|
||||
rendered_defaults="$(python3 - "${inventory_file}" <<'PY'
|
||||
import re
|
||||
import json
|
||||
import shlex
|
||||
import sys
|
||||
|
||||
|
|
@ -140,6 +141,14 @@ if debian_ip and gitea_http:
|
|||
gitea_ts = values.get("hosts.debian.tailscale_ip")
|
||||
if gitea_ts:
|
||||
print(f": ${{LAB_GITEA_TAILSCALE_IP:={shlex.quote(gitea_ts)}}}")
|
||||
subdomains = values.get("domain.subdomains")
|
||||
if subdomains:
|
||||
if isinstance(subdomains, str):
|
||||
subdomain_values = [item.strip() for item in subdomains.split(",") if item.strip()]
|
||||
else:
|
||||
subdomain_values = list(subdomains)
|
||||
if subdomain_values:
|
||||
print(f": ${{LAB_ADDITIONAL_SERVER_NAMES_JSON:={shlex.quote(json.dumps(subdomain_values))}}}")
|
||||
PY
|
||||
)"
|
||||
|
||||
|
|
@ -182,6 +191,7 @@ export_homelab_inventory_tf_vars() {
|
|||
export_if_unset TF_VAR_edge_user "${LAB_EDGE_USER:-}"
|
||||
export_if_unset TF_VAR_edge_install_dir "${LAB_EDGE_INSTALL_DIR:-}"
|
||||
export_if_unset TF_VAR_server_name "${LAB_DOMAIN:-}"
|
||||
export_if_unset TF_VAR_additional_server_names "${LAB_ADDITIONAL_SERVER_NAMES_JSON:-}"
|
||||
export_if_unset TF_VAR_backend_host "${LAB_TRAEFIK_LB_IP:-}"
|
||||
export_if_unset TF_VAR_gitea_backend_host "${LAB_DEBIAN_TAILSCALE_IP:-}"
|
||||
export_if_unset TF_VAR_gitea_backend_port "${LAB_GITEA_HTTP_PORT:-}"
|
||||
|
|
@ -1363,7 +1373,7 @@ check_debian_tailscale_ip() {
|
|||
}
|
||||
|
||||
check_edge_ssh() {
|
||||
local edge_host="${LAB_EDGE_HOST:-132.145.170.74}"
|
||||
local edge_host="${LAB_EDGE_HOST:?LAB_EDGE_HOST is required from homelab.yml}"
|
||||
local edge_user="${LAB_EDGE_USER:-ubuntu}"
|
||||
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "${edge_user}@${edge_host}" "true"
|
||||
|
|
@ -1466,7 +1476,7 @@ sudo rm -f \"\$root/.homelab-check/write-test\""
|
|||
}
|
||||
|
||||
check_edge_disk_free() {
|
||||
local edge_host="${LAB_EDGE_HOST:-132.145.170.74}"
|
||||
local edge_host="${LAB_EDGE_HOST:?LAB_EDGE_HOST is required from homelab.yml}"
|
||||
local edge_user="${LAB_EDGE_USER:-ubuntu}"
|
||||
local min_gib="${LAB_PREFLIGHT_EDGE_MIN_FREE_GIB:-2}"
|
||||
|
||||
|
|
@ -1536,7 +1546,7 @@ homelab_preflight() {
|
|||
fi
|
||||
preflight_warn "RPi Tailscale IP ${LAB_RPI_TAILSCALE_IP:-unset}" check_rpi_tailscale_ip
|
||||
preflight_check "Pimox storage ${LAB_PIMOX_WORKER_STORAGE:-${TF_VAR_pimox_worker_storage:-opi5_ssd}} is active" check_pimox_storage || failures=$((failures + 1))
|
||||
preflight_check "OCI edge SSH ${LAB_EDGE_USER:-ubuntu}@${LAB_EDGE_HOST:-132.145.170.74}" check_edge_ssh || failures=$((failures + 1))
|
||||
preflight_check "OCI edge SSH ${LAB_EDGE_USER:-ubuntu}@${LAB_EDGE_HOST:?LAB_EDGE_HOST is required from homelab.yml}" check_edge_ssh || failures=$((failures + 1))
|
||||
|
||||
if ((failures > 0)); then
|
||||
echo "Preflight failed with ${failures} blocking check(s). Fix the inventory or host state before continuing." >&2
|
||||
|
|
@ -2830,8 +2840,8 @@ deploy_gitea() {
|
|||
local image="${LAB_GITEA_IMAGE:-gitea/gitea:1.21.7}"
|
||||
local http_port="${LAB_GITEA_HTTP_PORT:-3000}"
|
||||
local ssh_port="${LAB_GITEA_SSH_PORT:-32222}"
|
||||
local domain="${LAB_GITEA_DOMAIN:-${LAB_DOMAIN:-lab2025.duckdns.org}}"
|
||||
local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
|
||||
local domain="${LAB_GITEA_DOMAIN:-${LAB_DOMAIN:?LAB_DOMAIN is required from homelab.yml}}"
|
||||
local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}"
|
||||
local container_name="${LAB_GITEA_CONTAINER_NAME:-homelab-gitea}"
|
||||
local compose_file="${REPO_ROOT}/infra/gitea/docker-compose.yml"
|
||||
local install_docker="${LAB_GITEA_INSTALL_DOCKER:-false}"
|
||||
|
|
@ -3248,7 +3258,7 @@ bootstrap_gitea_repo() {
|
|||
local container_name="${LAB_GITEA_CONTAINER_NAME:-homelab-gitea}"
|
||||
local http_port="${LAB_GITEA_HTTP_PORT:-3000}"
|
||||
local ssh_port="${LAB_GITEA_SSH_PORT:-32222}"
|
||||
local root_url="${LAB_GITEA_ROOT_URL:-https://lab2025.duckdns.org/git/}"
|
||||
local root_url="${LAB_GITEA_ROOT_URL:?LAB_GITEA_ROOT_URL is required from homelab.yml}"
|
||||
local repo_owner="${LAB_GITEA_REPO_OWNER:-jv}"
|
||||
local repo_name="${LAB_GITEA_REPO_NAME:-my-homelab-configs}"
|
||||
local default_branch="${LAB_GITEA_REPO_DEFAULT_BRANCH:-main}"
|
||||
|
|
@ -4659,7 +4669,7 @@ status_http_reachable() {
|
|||
}
|
||||
|
||||
status_gitea_public_ok() {
|
||||
local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
|
||||
local root_url="${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}"
|
||||
|
||||
status_http_reachable "${root_url}"
|
||||
}
|
||||
|
|
@ -4957,8 +4967,8 @@ status_cascade_report() {
|
|||
|
||||
status_section "Edge And Public URLs"
|
||||
status_cascade_check "OCI edge SSH" check_edge_ssh || failures=$((failures + 1))
|
||||
status_cascade_check "Traefik LoadBalancer HTTP" status_http_reachable "http://${LAB_TRAEFIK_LB_IP:-192.168.100.240}/" || failures=$((failures + 1))
|
||||
status_cascade_check "Website public URL" status_http_ok "${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/" || failures=$((failures + 1))
|
||||
status_cascade_check "Traefik LoadBalancer HTTP" status_http_reachable "http://${LAB_TRAEFIK_LB_IP:?LAB_TRAEFIK_LB_IP is required from homelab.yml}/" || failures=$((failures + 1))
|
||||
status_cascade_check "Website public URL" status_http_ok "${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/" || failures=$((failures + 1))
|
||||
status_cascade_check "Gitea public route" status_gitea_public_ok || failures=$((failures + 1))
|
||||
|
||||
if ((failures > 0)); then
|
||||
|
|
@ -5311,10 +5321,10 @@ status_report() {
|
|||
fi
|
||||
|
||||
status_section "HTTP"
|
||||
status_http "website public" "${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
|
||||
status_http "website public" "${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}"
|
||||
status_http "gitea local" "http://127.0.0.1:${LAB_GITEA_HTTP_PORT:-3000}/"
|
||||
status_http "traefik lb" "http://${LAB_TRAEFIK_LB_IP:-192.168.100.240}/"
|
||||
status_http "traefik lb" "http://${LAB_TRAEFIK_LB_IP:?LAB_TRAEFIK_LB_IP is required from homelab.yml}/"
|
||||
status_http "arr radarr" "http://127.0.0.1:7878/"
|
||||
status_http "arr sonarr" "http://127.0.0.1:8989/"
|
||||
status_http "arr prowlarr" "http://127.0.0.1:9696/"
|
||||
|
|
@ -5323,17 +5333,17 @@ status_report() {
|
|||
}
|
||||
|
||||
doctor_edge() {
|
||||
local edge_host="${LAB_EDGE_HOST:-132.145.170.74}"
|
||||
local edge_host="${LAB_EDGE_HOST:?LAB_EDGE_HOST is required from homelab.yml}"
|
||||
local edge_user="${LAB_EDGE_USER:-ubuntu}"
|
||||
local traefik_ip="${LAB_TRAEFIK_LB_IP:-192.168.100.240}"
|
||||
local gitea_ts_ip="${LAB_GITEA_TAILSCALE_IP:-100.85.138.30}"
|
||||
local traefik_ip="${LAB_TRAEFIK_LB_IP:?LAB_TRAEFIK_LB_IP is required from homelab.yml}"
|
||||
local gitea_ts_ip="${LAB_GITEA_TAILSCALE_IP:?LAB_GITEA_TAILSCALE_IP is required from homelab.yml}"
|
||||
local gitea_http_port="${LAB_GITEA_HTTP_PORT:-3000}"
|
||||
|
||||
require_debian_server "doctor-edge"
|
||||
|
||||
status_section "Doctor Edge"
|
||||
status_http "website public" "${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
|
||||
status_http "website public" "${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}"
|
||||
|
||||
printf '\n-- edge backend reachability\n'
|
||||
if ! ssh -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "${edge_user}@${edge_host}" "
|
||||
|
|
@ -5359,8 +5369,8 @@ EOF
|
|||
|
||||
backstage_brain_note "doctor-edge" <<EOF
|
||||
Doctor command: doctor-edge
|
||||
Public domain: ${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/
|
||||
Public Gitea URL: ${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}
|
||||
Public domain: ${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/
|
||||
Public Gitea URL: ${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}
|
||||
OCI edge SSH target: ${edge_user}@${edge_host}
|
||||
Traefik backend from edge: http://${traefik_ip}:80/
|
||||
Gitea backend from edge: http://${gitea_ts_ip}:${gitea_http_port}/
|
||||
|
|
@ -5369,9 +5379,9 @@ EOF
|
|||
}
|
||||
|
||||
doctor_gitea() {
|
||||
local edge_host="${LAB_EDGE_HOST:-132.145.170.74}"
|
||||
local edge_host="${LAB_EDGE_HOST:?LAB_EDGE_HOST is required from homelab.yml}"
|
||||
local edge_user="${LAB_EDGE_USER:-ubuntu}"
|
||||
local gitea_ts_ip="${LAB_GITEA_TAILSCALE_IP:-100.85.138.30}"
|
||||
local gitea_ts_ip="${LAB_GITEA_TAILSCALE_IP:?LAB_GITEA_TAILSCALE_IP is required from homelab.yml}"
|
||||
local gitea_host="${LAB_GITEA_HOST:-192.168.100.73}"
|
||||
local gitea_http_port="${LAB_GITEA_HTTP_PORT:-3000}"
|
||||
local gitea_ssh_port="${LAB_GITEA_SSH_PORT:-32222}"
|
||||
|
|
@ -5380,7 +5390,7 @@ doctor_gitea() {
|
|||
|
||||
status_section "Doctor Gitea"
|
||||
status_http "gitea local" "http://127.0.0.1:${gitea_http_port}/"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}"
|
||||
status_http "gitea public" "${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}"
|
||||
status_compose_stack "gitea" "/data/homelab-gitea"
|
||||
|
||||
status_run "gitea git remote" git ls-remote gitea main
|
||||
|
|
@ -5409,7 +5419,7 @@ Gitea local URL: http://127.0.0.1:${gitea_http_port}/
|
|||
Gitea LAN host: ${gitea_host}
|
||||
Gitea Tailscale backend: http://${gitea_ts_ip}:${gitea_http_port}/
|
||||
Gitea SSH port: ${gitea_ssh_port}
|
||||
Gitea public URL: ${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:-https://lab2025.duckdns.org}/git/}
|
||||
Gitea public URL: ${LAB_GITEA_ROOT_URL:-${LAB_PUBLIC_URL:?LAB_PUBLIC_URL is required from homelab.yml}/git/}
|
||||
Known runbook: docs/runbooks/gitea-failures.md
|
||||
EOF
|
||||
}
|
||||
|
|
@ -5445,7 +5455,7 @@ doctor_cluster() {
|
|||
status_systemd_units kubelet containerd docker
|
||||
status_kubernetes
|
||||
status_pimox_workers
|
||||
status_http "traefik lb" "http://${LAB_TRAEFIK_LB_IP:-192.168.100.240}/"
|
||||
status_http "traefik lb" "http://${LAB_TRAEFIK_LB_IP:?LAB_TRAEFIK_LB_IP is required from homelab.yml}/"
|
||||
|
||||
printf '\n-- local CRI containers\n'
|
||||
if command -v crictl >/dev/null 2>&1; then
|
||||
|
|
@ -5467,7 +5477,7 @@ EOF
|
|||
backstage_brain_note "doctor-cluster" <<EOF
|
||||
Doctor command: doctor-cluster
|
||||
Kubeconfig path: ${KUBECONFIG_PATH}
|
||||
Traefik LoadBalancer IP: ${LAB_TRAEFIK_LB_IP:-192.168.100.240}
|
||||
Traefik LoadBalancer IP: ${LAB_TRAEFIK_LB_IP:?LAB_TRAEFIK_LB_IP is required from homelab.yml}
|
||||
Pimox host: ${LAB_PIMOX_USER:-${TF_VAR_pimox_user:-jv}}@${LAB_PIMOX_HOST:-${TF_VAR_pimox_host:-192.168.100.80}}
|
||||
Worker storage: ${LAB_PIMOX_WORKER_STORAGE:-${TF_VAR_pimox_worker_storage:-opi5_ssd}}
|
||||
Known runbook: docs/runbooks/cluster-stop-start-failures.md
|
||||
|
|
|
|||
Loading…
Reference in New Issue