dynamic-infra-tooling/README.md
2026-02-06 08:27:29 +01:00

2.8 KiB

LoopAware Infrastructure CLI

A robust Python-based CLI designed for automated management of the LoopAware infrastructure. Built for developers and AI agents to provision and manage resources on a flat 10.32.0.0/16 network.

Core Modules

Module Command Description
Identity infra samba Manage Active Directory users and groups.
Compute infra proxmox Provision and destroy LXC containers across nodes.
Database infra db Provision PostgreSQL databases and users.
Network infra dns Manage static DHCP leases and DNS records.
IP AM infra ip Automatic discovery of free IPs in the agent pool.
Ingress infra ingress Manage HAProxy subdomains and routing.
Certificates infra cert Manage SSL/TLS certificates (Let's Encrypt).
External infra cloudflare Manage Cloudflare DNS and Dynamic DNS updates.

Installation

cd external/dynamic-infra-tooling
pip install -e .

Configuration

The CLI looks for a config file at ~/.config/loopaware/infra-cli.yaml or the path specified in the INFRA_CONFIG environment variable.

# Set up your local config
cp config.yaml.example config.yaml
export INFRA_CONFIG=$(pwd)/config.yaml

Common Workflows

  1. Find an IP: infra ip next-free
  2. Create Database: infra db provision "my-project"
  3. Provision LXC: infra proxmox create-lxc 12xxx debian-13 "my-host" "10.32.70.x/16" "10.32.0.1" --node la-vmh-12
  4. Setup DNS: infra dns add-host <MAC> 10.32.70.x "my-host"
  5. Update SSL: infra cert renew
  6. Expose Ingress: infra ingress add "my-project.loopaware.com" 10.32.70.x 80

Full Decommission

Clean up every trace of a service in one command:

infra decommission --domain my-project.loopaware.com --mac <MAC> --vmid 12xxx --node la-vmh-12

Safety & Validation

  • Template Resolution: The debian-13 alias automatically finds the latest template on the target Proxmox node.
  • Input Validation: All IPs, MACs, and Ports are validated before execution.
  • Pre-flight Checks: The CLI verifies SSH connectivity to nodes before attempting changes.

Pro-Tips for Developers

Environment Selection

  • Staging: Use --node la-vmh-07 for experiments.
  • Public Production: Use --node la-vmh-12.
  • Private Production: Use --node la-vmh-13.

Programmatic Integration

The CLI is designed to be consumed by other scripts. Use the --config flag or INFRA_CONFIG environment variable to point to your configuration.

# Get just the IP for scripting
NEW_IP=$(infra ip next-free)

Development

Running Tests

export ROUTER_PASS="..."
pytest tests/test_cli.py -v