This commit updates the VM memory allocation specifically for the 'dc' template, resolving an issue where memory was misconfigured. It also removes the outdated 'vm-01' entry, streamlining the configuration and ensuring optimal performance.
108 lines
4.1 KiB
YAML
108 lines
4.1 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: dc
|
|
template: 9412
|
|
vmid: 1000
|
|
memory: 2048
|
|
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
|