This commit updates the URLs for Debian images used as Proxmox templates. The URLs have been corrected to reflect the latest available Debian 13 images, ensuring proper template downloads and configurations within the Proxmox environment.
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-genericcloud-amd64-20251117-2299.qcow2
|
|
proxmox_template_vm_debian_image_url: https://cloud.debian.org/images/cloud/trixie/20251117-2299/debian-13-genericcloud-amd64-20251117-2299.qcow2
|
|
|
|
|
|
proxmox_template_vm_ubuntu_ostype: l26
|
|
proxmox_template_vm_fedora_ostype: l26
|
|
proxmox_template_vm_debian_ostype: l26
|
|
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 |