homelab/scripts/README.md

74 lines
2.2 KiB
Markdown

# scripts
Automation utilities and helper scripts for homelab infrastructure management.
---
## Inventory
| Script | Purpose | Status |
|--------|---------|--------|
| [onboarding.sh](onboarding.sh) | Bootstrap Ansible control node for Proxmox management | 🟡 **DRAFT** - Testing Required |
---
## onboarding.sh
**Purpose:** Automated setup of Ansible control node for Proxmox infrastructure management.
**What it does:**
1. Installs Ansible and Proxmoxer Python library
2. Detects or generates SSH keypair (ED25519 preferred, RSA fallback)
3. Copies public key to Proxmox server for passwordless authentication
4. Generates Ansible inventory file (`hosts.ini`) with Proxmox connection details
**Prerequisites:**
- Debian/Ubuntu-based system (uses `apt`)
- Network access to Proxmox server
- Initial SSH password for target Proxmox server
**Configuration:**
Edit the following variables at the top of the script:
```bash
PROXMOX_IP="192.168.1.100" # Target Proxmox server IP
PROXMOX_USER="root" # Proxmox SSH user
```
**Usage:**
```bash
cd ~/dev/homelab/scripts
chmod +x onboarding.sh
./onboarding.sh
```
**Verification:**
```bash
ansible proxmox_nodes -m ping -i hosts.ini
```
---
## ⚠️ Development Status
| Script | Testing Status | Known Issues |
|--------|---------------|--------------|
| onboarding.sh | ❌ Untested in production | • Hardcoded Proxmox IP/user variables<br>• No error handling for failed SSH key copy<br>• Assumes Debian/Ubuntu package manager<br>• No validation of Proxmox connectivity |
**DO NOT USE IN PRODUCTION** until the following are addressed:
1. **Error Handling:** Add validation checks for each step
2. **Idempotency:** Verify script can be safely re-run
3. **Multi-OS Support:** Test on RHEL/Arch variants or add OS detection
4. **Interactive Mode:** Prompt for PROXMOX_IP/USER instead of manual editing
5. **Rollback:** Add cleanup mechanism for failed installations
---
## Contributing
When adding new scripts:
1. Update the **Inventory** table with script name and purpose
2. Document prerequisites, configuration, and usage
3. Mark status as 🟡 DRAFT until production-tested
4. Add to **Development Status** table with known issues