This commit updates the documentation to reflect the new configurations for Debian templates, including supported distros, image URLs, and associated settings like storage, memory, cores, and SSH keys. This ensures clarity for users setting up Debian-based templates within Proxmox.
152 lines
6.4 KiB
YAML
152 lines
6.4 KiB
YAML
- name: Deploy VM templates
|
|
hosts: node0
|
|
|
|
tasks:
|
|
# - name: Import variables from Ansible vault
|
|
# ansible.builtin.include_vars: secrets.yml
|
|
- name: Install proxmoxer from APT
|
|
apt:
|
|
name: python3-proxmoxer
|
|
state: present
|
|
update_cache: yes
|
|
|
|
- name: "[PREFLIGHT] Check if 'snippets' is already enabled for {{ proxmox_snippets_storage }}"
|
|
ansible.builtin.command: "grep -E 'dir:\\s*{{ proxmox_snippets_storage }}' -A5 /etc/pve/storage.cfg"
|
|
register: snippets_check
|
|
failed_when: false
|
|
changed_when: false
|
|
vars:
|
|
proxmox_snippets_storage: local
|
|
|
|
- name: "[PREFLIGHT] Determine whether 'snippets' is already configured"
|
|
ansible.builtin.set_fact:
|
|
snippets_already_present: "{{ 'snippets' in snippets_check.stdout }}"
|
|
|
|
- name: "[PREFLIGHT] Ensure 'snippets' is enabled for {{ proxmox_snippets_storage }}"
|
|
ansible.builtin.replace:
|
|
path: /etc/pve/storage.cfg
|
|
regexp: '(dir:\s*{{ proxmox_snippets_storage }}[\s\S]*?content\s+)(.*)(?<!snippets)'
|
|
replace: '\1\2,snippets'
|
|
when: not snippets_already_present
|
|
vars:
|
|
proxmox_snippets_storage: local
|
|
|
|
- name: "[PREFLIGHT] Ensure snippets storage directory exists"
|
|
ansible.builtin.file:
|
|
path: "{{ proxmox_snippets_storage_path }}/snippets"
|
|
state: directory
|
|
mode: "0755"
|
|
vars:
|
|
proxmox_snippets_storage_path: /var/lib/vz
|
|
|
|
|
|
- name: Deploy templates with proxmox_template_vm
|
|
ansible.builtin.include_role:
|
|
name: joshrnoll.homelab.proxmox_template_vm
|
|
vars:
|
|
|
|
proxmox_template_vm_supported_distros:
|
|
- fedora
|
|
- ubuntu
|
|
- debian
|
|
|
|
proxmox_template_vm_fedora_image: Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2
|
|
proxmox_template_vm_fedora_image_url: https://download.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2
|
|
proxmox_template_vm_ubuntu_image: jammy-server-cloudimg-amd64.img
|
|
proxmox_template_vm_ubuntu_image_url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
|
|
proxmox_template_vm_debian_image: debian-13-generic-arm64-20251117-2299.qcow2
|
|
proxmox_template_vm_debian_image_url: https://cloud.debian.org/images/cloud/trixie/20251117-2299/debian-13-generic-arm64-20251117-2299.qcow2
|
|
|
|
|
|
proxmox_template_vm_ubuntu_ostype: l26
|
|
proxmox_template_vm_fedora_ostype: l26
|
|
proxmox_template_vm_debian_ostype: linux
|
|
proxmox_template_vm_ubuntu_osvariant: ubuntu-20.04
|
|
|
|
proxmox_template_vm_debian_name: debian-template
|
|
proxmox_template_vm_debian_memory: 4096
|
|
proxmox_template_vm_debian_cores: 2
|
|
proxmox_template_vm_debian_storage: local-lvm
|
|
|
|
|
|
# Required to provide at least one
|
|
proxmox_template_vm_distros:
|
|
- debian
|
|
- ubuntu
|
|
|
|
# Required proxmox credentials
|
|
proxmox_template_vm_proxmox_username: "{{ proxmox_username }}" # From Ansible vault
|
|
proxmox_template_vm_proxmox_api_token_id: "{{ proxmox_api_token_id }}" # From Ansible vault
|
|
proxmox_template_vm_proxmox_api_token_secret: "{{ proxmox_api_token_secret }}" # From Ansible vault
|
|
|
|
|
|
# Optional customizations for debian
|
|
proxmox_template_vm_debian_storage: "local-lvm"
|
|
proxmox_template_vm_debian_name: debian-40-template
|
|
proxmox_template_vm_debian_memory: 2048
|
|
proxmox_template_vm_debian_cores: 1
|
|
proxmox_template_vm_debian_ciuser: "{{ ciuser }}" # From Ansible vault
|
|
proxmox_template_vm_debian_cipassword: "{{ cipassword }}" # From Ansible vault
|
|
proxmox_template_vm_debian_sshkeys: "{{ ssh_public_keys | join('\n') }}" # gets your ssh key from /home/user/.ssh/id_rsa.pub -- customize this to your needs
|
|
# proxmox_template_vm_debian_vlan: 50
|
|
|
|
# Optional customizations for ubuntu
|
|
proxmox_template_vm_ubuntu_storage: "local-lvm"
|
|
proxmox_template_vm_ubuntu_name: ubuntu-2204-template
|
|
proxmox_template_vm_ubuntu_memory: 4096
|
|
proxmox_template_vm_ubuntu_cores: 1
|
|
proxmox_template_vm_ubuntu_ciuser: "{{ ciuser }}" # From Ansible vault
|
|
proxmox_template_vm_ubuntu_cipassword: "{{ cipassword }}" # From Ansible vault
|
|
# proxmox_template_vm_ubuntu_sshkeys: "{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}" # gets your ssh key from /home/user/.ssh/id_rsa.pub -- customize this to your needs
|
|
proxmox_template_vm_ubuntu_sshkeys: "{{ ssh_public_keys | join('\n') }}" # gets your ssh key from /home/user/.ssh/id_rsa.pub -- customize this to your needs
|
|
# proxmox_template_vm_ubuntu_vlan: 50
|
|
|
|
# Set to true if you have slow storage to avoid file locks
|
|
proxmox_template_vm_slow_storage: true
|
|
|
|
- name: Deploy VMs
|
|
ansible.builtin.include_role:
|
|
name: joshrnoll.homelab.create_proxmox_vms
|
|
vars:
|
|
# Proxmox credentials
|
|
create_proxmox_vms_proxmox_username: "{{ proxmox_username }}"
|
|
create_proxmox_vms_proxmox_api_token_id: "{{ proxmox_api_token_id }}"
|
|
create_proxmox_vms_proxmox_api_token_secret: "{{ proxmox_api_token_secret }}"
|
|
|
|
# VMs to be created
|
|
create_proxmox_vms_list:
|
|
- name: vm-01
|
|
template: 9412
|
|
vmid: 1000
|
|
memory: 8192
|
|
cores: 2
|
|
node: node0 # The hostname of the node that the VM will be created on
|
|
ciuser: "{{ ciuser }}"
|
|
cipassword: "{{ cipassword }}"
|
|
# sshkeys: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
|
|
storage: local-lvm
|
|
disk_size: 32G
|
|
vlan: 50
|
|
ip_address: 192.168.2.98/24
|
|
gateway: 192.168.2.1
|
|
nameservers:
|
|
- 192.168.2.100
|
|
- 8.8.8.8
|
|
|
|
- name: vm-02
|
|
vmid: 1001
|
|
template: 9413
|
|
memory: 4096
|
|
cores: 1
|
|
node: node0 # The hostname of the node that the VM will be created on
|
|
ciuser: "{{ ciuser }}"
|
|
cipassword: "{{ cipassword }}"
|
|
# sshkeys: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
|
|
storage: local-lvm
|
|
disk_size: 64G
|
|
vlan: 50
|
|
ip_address: 192.168.2.99/24
|
|
gateway: 192.168.2.1
|
|
nameservers:
|
|
- 192.168.2.100
|
|
- 8.8.8.8 |