- Replace YAML merge keys (<<:) with module_defaults block in main.yml - Simplify connection variables to individual vars instead of dictionary - Remove redundant connection params from individual task files - Document standalone task usage requires play-level module_defaults - Update README examples with new variable pattern
105 lines
2.5 KiB
Markdown
105 lines
2.5 KiB
Markdown
# Infrastructure Collection
|
|
|
|
Ansible collection for infrastructure management, system configuration, and virtualization.
|
|
|
|
## Roles
|
|
|
|
### proxmox_lxc_provision
|
|
Manages Proxmox LXC containers with comprehensive lifecycle operations.
|
|
|
|
- Create, clone, start, stop, and delete containers
|
|
- Template conversion and configuration editing
|
|
- Post-provisioning tasks and health checks
|
|
|
|
### system_setup
|
|
Performs initial system configuration for new servers.
|
|
|
|
- Creates admin user with SSH key authentication
|
|
- Hardens SSH configuration
|
|
- Installs essential packages
|
|
- Optional passwordless sudo configurations
|
|
|
|
### system_maintenance
|
|
Updates packages and handles maintenance across multiple distributions.
|
|
|
|
- Multi-distribution support (Debian/Ubuntu/Alpine)
|
|
- Package updates and cleanup
|
|
- Automatic reboot handling when required
|
|
|
|
### nvidia_drivers
|
|
Installs NVIDIA drivers and CUDA runtime with proper idempotency and error handling.
|
|
|
|
- Supports Debian/Ubuntu with automatic OS detection
|
|
- Choice between proprietary and open-source drivers
|
|
- Post-installation verification and cleanup
|
|
- Architecture detection (x86_64/arm64)
|
|
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
ansible-galaxy collection install patrickj.infrastructure
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
### Proxmox API Configuration
|
|
|
|
Set up your Proxmox API connection variables in group vars:
|
|
|
|
```yaml
|
|
# group_vars/all.yml
|
|
proxmox_api_host: "10.0.1.1"
|
|
proxmox_api_port: 8006
|
|
proxmox_api_user: "automation@pve"
|
|
proxmox_api_token_id: "mytoken"
|
|
proxmox_api_token_secret: "{{ vault_proxmox_token }}"
|
|
proxmox_api_validate_certs: false
|
|
proxmox_node: "pve01"
|
|
```
|
|
|
|
### Basic Proxmox LXC Container Setup
|
|
|
|
```yaml
|
|
- name: Create and start an LXC container
|
|
hosts: localhost
|
|
connection: local
|
|
vars:
|
|
lxc_vmid: 100
|
|
lxc_hostname: new-debian-container
|
|
lxc_template: "local:vztmpl/debian-12_amd64.tar.zst"
|
|
lxc_ipv4: "10.0.0.99/24"
|
|
roles:
|
|
- role: proxmox_lxc_provision
|
|
|
|
- name: Configure the LXC container
|
|
hosts: new-debian-container
|
|
become: yes
|
|
tasks:
|
|
- include_role:
|
|
name: patrickj.infrastructure.system_setup
|
|
vars:
|
|
password: "{{ admin_password }}"
|
|
ssh_pubkey_file: "~/.ssh/id_rsa.pub"
|
|
|
|
- include_role:
|
|
name: patrickj.infrastructure.nvidia_drivers
|
|
vars:
|
|
nvidia_install_kernel_modules: true
|
|
when: gpu_server | default(false)
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Ansible >= 2.12
|
|
- Root/sudo privileges on target hosts
|
|
- community.general collection
|
|
- ansible.posix collection
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Author
|
|
|
|
Patrick Jaroszewski |