This commit updates the Debian and Ubuntu VM templates to utilize smaller disk sizes, optimizing storage space. The changes also incorporate updated configurations for improved performance and compatibility. These adjustments streamline the VM deployment process and enhance overall system efficiency.
109 lines
4.2 KiB
YAML
109 lines
4.2 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_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_debian_ostype: l26
|
|
|
|
# Required to provide at least one
|
|
proxmox_template_vm_distros:
|
|
- debian
|
|
|
|
# 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_name: debian-template
|
|
proxmox_template_vm_debian_memory: 2048
|
|
proxmox_template_vm_debian_cores: 2
|
|
proxmox_template_vm_debian_storage: local-lvm
|
|
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
|
|
|
|
# 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: 8G
|
|
# vlan: 50
|
|
ip_address: 192.168.2.98/24
|
|
gateway: 192.168.2.1
|
|
nameservers:
|
|
- 192.168.2.100
|
|
- 8.8.8.8
|