This commit updates the Proxmox credentials within the testing task file. This ensures the testing environment can successfully authenticate with Proxmox, resolving potential connection issues. The change improves the reliability of automated testing.
125 lines
4.4 KiB
YAML
125 lines
4.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_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: dc1
|
|
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.3/24
|
|
gateway: 192.168.2.1
|
|
nameservers:
|
|
- 192.168.2.100
|
|
- 8.8.8.8
|
|
|
|
|
|
- name: Test common role
|
|
hosts: dc1
|
|
|
|
tasks:
|
|
- name: Deploy VMs
|
|
ansible.builtin.include_role:
|
|
name: ansible-role-debian_common
|
|
|
|
vars:
|
|
# Proxmox credentials
|
|
ansible_user: "{{ ciuser }}"
|
|
ansible_password: "{{ cipassword }}"
|
|
|
|
|