4f09e886c2735bb17d9bbbfd20d40eb7c1da97c8
The bridge (vmbr0) and interface name (eth0) were previously hardcoded in the netif string, and there was no way to set an 802.1Q VLAN tag. Expose lxc_bridge, lxc_iface_name, and lxc_vlan_tag (optional) so containers can be attached to non-default bridges or tagged into a VLAN without forking the role. Also drop the misleading 'lxc_ipv6 | default(omit)' filter — default(omit) does not produce omission inside a string context, and lxc_ipv6 always has a default of 'auto' in defaults/main.yml.
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
ansible-galaxy collection install patrickj.infrastructure
Quick Start
Proxmox API Configuration
Set up your Proxmox API connection variables in group vars:
# 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
- 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
- community.proxmox collection
- ansible.posix collection
License
MIT
Author
Patrick Jaroszewski
Description
Languages
Jinja
100%