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>
40 lines
1.2 KiB
HCL
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/", "")
|
|
}
|
|
}
|
|
}
|