105 lines
No EOL
2.6 KiB
Markdown
105 lines
No EOL
2.6 KiB
Markdown
# 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_13.1-2_amd64.tar.zst "new-app" "10.32.70.100/16" "10.32.0.1" --node la-vmh-12
|
|
```
|
|
|
|
### 3. Database (PostgreSQL)
|
|
Provision project-specific databases instantly.
|
|
|
|
```bash
|
|
# 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`).
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
# 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](../../docs/guides/dynamic-infrastructure-workflow.md).
|
|
|
|
## Development and Testing
|
|
|
|
Run the integration test suite:
|
|
```bash
|
|
export ROUTER_PASS="..."
|
|
pytest tests/test_cli.py -s
|
|
``` |