# 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 ```bash cd external/dynamic-infra-tooling pip install -e . ``` ## Configuration The CLI requires a `config.yaml` file. A template is provided in `config.yaml.example`. ```bash 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) ```bash # 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) ```bash # 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) ```bash # 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) ```bash # 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](../../docs/guides/dynamic-infrastructure-workflow.md). ## Development and Testing Run the integration test suite: ```bash export ROUTER_PASS="..." pytest tests/test_cli.py -s ```