sam d0b82c4973 first successful two-VM run + fixes surfaced by it
The initial two-VM run against a real Proxmox host found three real
bugs in the obmp-docker stack, plus one design issue in this test:

  Fixed in obmp-docker (deploy-refinement branch):
    - 745f066  deploy.sh: probe sudo with `sudo -n true` instead of
               `sudo -v` / `sudo -n -v`; the latter demands a credential
               timestamp that NOPASSWD never produces, so both fail on
               cloud-init / CI even with NOPASSWD:ALL configured.
    - 6df67a7  .env.example: quote GNMI_ADDRESSES with single quotes so
               docker compose's .env parser doesn't choke on the mid-line
               comma in the double-quoted list form.

  Fixed here:
    - bmpgen cloud-init: add `port = 1179` under [global.config] to
      avoid gobgpd's 179 listener bind failing under Ubuntu 24.04 +
      Docker even with --network host and default NET_BIND_SERVICE cap.
      We don't accept BGP peers on bmpgen so the port value doesn't
      matter as long as it's unprivileged.
    - run-test.sh: fix column name for bgp_peers.state -- the opstate
      enum uses lowercase 'up', not uppercase 'UP'.

  Verified against the live run: 6/6 assertions pass, ip_rib landed
  251,760 routes from the store VM's own gobgp connecting to Bromirski's
  public full-table feed via --profile test.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-20 23:38:43 -07:00

40 lines
1.2 KiB
HCL

terraform {
required_version = ">= 1.5.0"
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "~> 0.60"
}
random = {
source = "hashicorp/random"
version = "~> 3.6"
}
}
}
# Provider config. Endpoint and token can come from PROXMOX_VE_ENDPOINT and
# PROXMOX_VE_API_TOKEN environment variables instead of tfvars -- preferred
# for CI / shared workstations. `insecure` should be true only for a lab PVE
# that presents a self-signed cert.
provider "proxmox" {
endpoint = var.pve_endpoint
api_token = var.pve_api_token
insecure = var.pve_insecure
# SSH is used by the provider for snippet uploads (SCP, not the API --
# a known bpg quirk). Point it at the same address as the API endpoint
# rather than letting the provider guess from cluster metadata (which
# may return a bridge address that's unreachable from here).
ssh {
agent = false
username = var.pve_ssh_username
private_key = file(var.pve_ssh_private_key_path)
node {
name = var.pve_node
address = var.pve_ssh_address != "" ? var.pve_ssh_address : replace(replace(var.pve_endpoint, "https://", ""), ":8006/", "")
}
}
}