Files
homelab/docs/backlog.md

3.3 KiB

mk-labs VM Provisioning Pipeline — Backlog

Pipeline Hardening

  • Error handling on individual pipeline steps — Each step (Terraform, Proxmox API, NetBox API) should catch failures and set NetBox status to Failed with a descriptive error in provisioning_notes
  • Terraform init check — Verify terraform init has been run before apply, or add it to the pipeline
  • Terraform plan before apply — Optional dry-run mode for validation without execution
  • -state flag deprecation — Migrate from -state CLI flag to local backend path attribute for per-VM state isolation

Secrets Management

  • HashiCorp Vault (or equivalent) — Centralized secrets management to replace n8n Global Constants
  • Verify n8n Community Edition compatibility — Confirm whether CE supports external secrets store integrations before planning migration

Sub-workflow Refactoring (DRY)

  • DHCP: Create Reservation — Extract Unifi DHCP step into standalone sub-workflow (inputs: hostname, mac_address, ip_address). Reusable for LXCs, printers, switches, etc.
  • DNS: Delete A Record — Companion to the existing Create sub-workflow for VM decommissioning
  • NetBox: Register MAC Address — Extract MAC creation + interface assignment into sub-workflow

Ansible Integration

  • Semaphore trigger from n8n — Call Semaphore API to launch vm-provision playbook after VM boots
  • vm-baseline role — Packages, SSH hardening, user config, any other OS-level setup
  • Ansible sets NetBox Active — Move final status update from n8n to Ansible (confirms OS config succeeded, not just infra provisioning)

Infrastructure Automation

  • city-hall bootstrap playbook — Ansible playbook to automate Terraform prerequisites: install Terraform, clone repo, terraform init on all modules, create states/ directories
  • Proxmox API token management — Document or automate token rotation

VM Lifecycle

  • VM decommissioning pipeline — Reverse flow triggered by NetBox status change (e.g., Active → Decommissioning):
    • Remove VM from HA affinity rule (Proxmox API)
    • Remove HA resource (Proxmox API)
    • Stop VM (Proxmox API)
    • Remove DNS A record (Technitium API — new sub-workflow: DNS: Delete A Record)
    • Remove DHCP reservation (Terraform destroy on unifi/dhcp state file)
    • Destroy VM (Terraform destroy on proxmox/vm state file)
    • Remove MAC address from NetBox
    • Clear VM resources in NetBox (CPU, memory, disk)
    • Set NetBox status to Decommissioned (or delete VM record)
    • Clean up Terraform state files
  • VM resize/update pipeline — Handle CPU/memory changes triggered from NetBox
  • VM rebuild pipeline — Destroy and re-provision a VM in place (same IP, hostname, fresh OS)

NetBox Enhancements

  • Webhook idempotency — Investigate NetBox event rule conditions to filter at the source instead of in n8n
  • Additional custom fields — As needs arise (e.g., Ansible playbook to run, application role)

n8n Workflow Improvements

  • Notification on failure — Slack/email alert when pipeline fails
  • Execution logging — Structured logging for pipeline runs
  • Parallel execution — Run independent steps concurrently (e.g., NetBox VM update + DHCP reservation)