dynamic-infra-tooling/README.md
2026-02-05 19:06:07 +01:00

2 KiB

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
infra proxmox create-lxc 12150 local:vztmpl/debian-13-standard "new-app" "10.32.70.100/16" "10.32.0.1" --node la-vmh-12

3. Networking (DNS & DHCP)

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

# Add a custom DNS record
infra dns add-dns "api.loopaware.com" "10.32.70.100"

4. Public Ingress (HAProxy)

# Expose the service to the internet
infra ingress add "app.loopaware.com" "10.32.70.100" 80

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