Professional CLI tooling for managing LoopAware dynamic infrastructure
Find a file
2026-02-05 19:53:18 +01:00
bin initial commit: dynamic infra tooling cli 2026-02-05 11:29:34 +01:00
infra_cli feat: add automatic template resolution for debian-13 alias 2026-02-05 19:53:18 +01:00
tests feat: add unified decommission and database provisioning modules 2026-02-05 19:48:16 +01:00
.gitignore chore: add gitignore and cleanup cache 2026-02-05 11:37:39 +01:00
config.yaml.example initial commit: dynamic infra tooling cli 2026-02-05 11:29:34 +01:00
README.md feat: add automatic template resolution for debian-13 alias 2026-02-05 19:53:18 +01:00
setup.py feat: add cloudflare module for dynamic dns updates 2026-02-05 19:15:50 +01:00

LoopAware Infrastructure CLI

A professional Python-based CLI for programmatically managing the LoopAware flat network (10.32.0.0/16).

Features

  • DNS/DHCP: Manage dnsmasq reservations and records on la-dnsmasq-01.
  • Ingress: Dynamic HAProxy routing for subdomains.
  • Router: Manage OpenWrt firewall DNAT rules (TCP/UDP).
  • Proxmox: Provision and manage LXC containers across physical nodes (vmh-07 to vmh-13).
  • Samba: Automated User and Group management for Active Directory.

Installation

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

Configuration

The CLI requires a config.yaml file. A template is provided in config.yaml.example.

cp config.yaml.example config.yaml
# Update the nodes, IPs, and SSH key paths

Environment Variables

  • ROUTER_PASS: Required for router operations (if SSH keys are not deployed).
  • INFRA_CONFIG: Optional path to a custom config file.

Usage Guide

1. Identity & Access (Samba)

# List all users
infra samba list-users

# Create a new user
infra samba add-user "jdoe" "SecurePass123!"

# Grant XMPP access
infra samba add-to-group "xmpp-users" "jdoe"

2. Compute (Proxmox)

# List containers on a specific node
infra proxmox list-lxcs --node la-vmh-12

# Create a new container (CLI resolves "debian-13" automatically)
infra proxmox create-lxc 12150 debian-13 "new-app" "10.32.70.100/16" "10.32.0.1" --node la-vmh-12

3. Database (PostgreSQL)

Provision project-specific databases instantly.

# List all databases
infra db list-dbs

# Provision a new database and user for a project
infra db provision "my-new-project"

4. Networking (IP, DNS & DHCP)

Assign a static identity to your new machine. The CLI helps you find free addresses in the dedicated agent pool (10.32.70.0/16 through 10.32.80.0/16).

# Find the next available IP for your project
infra ip next-free

# List top 5 available IPs
infra ip list-free --count 5

# Register the machine in DHCP
infra dns add-host "aa:bb:cc:dd:ee:ff" "10.32.70.100" "new-app"

4. Cloudflare DDNS

The list of domains to update is managed dynamically on the server.

# Add a domain to the update list
infra cloudflare add-ddns "my-new-domain.com"

# List all domains being updated
infra cloudflare list-ddns

# Run the update (usually via cron)
infra cloudflare update-ddns

Advanced Workflows for AI Agents

For detailed automation workflows, see Workflow Documentation.

Development and Testing

Run the integration test suite:

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