From 97c97e7b9880a90b2e54dd2b5f02aaf65824fb1f Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Fri, 3 Jul 2026 23:43:17 +0200 Subject: Refactor pve roles to create storage separately --- host_vars/pve.local.yml | Bin 822 -> 827 bytes host_vars/pve.local.yml.example | 7 +++---- roles/pve-network/tasks/main.yml | 5 ----- roles/pve-storage/defaults/main.yml | 4 ++++ roles/pve-storage/meta/argument_specs.yml | 16 +++++++++++++++ roles/pve-storage/meta/main.yml | 12 ++++++++++++ roles/pve-storage/tasks/main.yml | 31 ++++++++++++++++++++++++++++++ roles/pve/defaults/main.yml | 2 -- roles/pve/meta/argument_specs.yml | 8 -------- roles/pve/tasks/main.yml | 8 -------- 10 files changed, 66 insertions(+), 27 deletions(-) create mode 100644 roles/pve-storage/defaults/main.yml create mode 100644 roles/pve-storage/meta/argument_specs.yml create mode 100644 roles/pve-storage/meta/main.yml create mode 100644 roles/pve-storage/tasks/main.yml diff --git a/host_vars/pve.local.yml b/host_vars/pve.local.yml index a0465c97..16fb0f37 100644 Binary files a/host_vars/pve.local.yml and b/host_vars/pve.local.yml differ diff --git a/host_vars/pve.local.yml.example b/host_vars/pve.local.yml.example index f804ba67..0c9bcbcb 100644 --- a/host_vars/pve.local.yml.example +++ b/host_vars/pve.local.yml.example @@ -9,12 +9,11 @@ network_ipv4_address: "10.0.0.253" network_ipv4_gateway: "10.0.0.254" network_ipv4_dns: "10.0.0.254" -pve_network_interface: "enp0s25" - pve_admin_user: "admin" pve_admin_password: "changeme" -pve_lvm_device: "/dev/sda4" -pve_lvm_vg_name: "pve" +pve_network_interface: "enp0s25" +pve_storage_device: "/dev/sda4" +pve_storage_name: "pve" restic_version: "0.19.0" diff --git a/roles/pve-network/tasks/main.yml b/roles/pve-network/tasks/main.yml index dcaf0638..80ed6753 100644 --- a/roles/pve-network/tasks/main.yml +++ b/roles/pve-network/tasks/main.yml @@ -29,8 +29,3 @@ group: "root" mode: "0600" notify: "Restart NetworkManager" - -- name: "Wait for connection to recover after bridge reconfiguration" - ansible.builtin.wait_for_connection: - delay: 5 - timeout: 30 diff --git a/roles/pve-storage/defaults/main.yml b/roles/pve-storage/defaults/main.yml new file mode 100644 index 00000000..77499ce0 --- /dev/null +++ b/roles/pve-storage/defaults/main.yml @@ -0,0 +1,4 @@ +--- +pve_storage_device: "/dev/sda4" +pve_storage_name: "pve" +pve_storage_pool: "data" diff --git a/roles/pve-storage/meta/argument_specs.yml b/roles/pve-storage/meta/argument_specs.yml new file mode 100644 index 00000000..7f502ef7 --- /dev/null +++ b/roles/pve-storage/meta/argument_specs.yml @@ -0,0 +1,16 @@ +--- +argument_specs: + main: + options: + pve_storage_device: + type: "str" + description: "Block device for LVM physical volume (e.g. /dev/sda4)" + default: "/dev/sda4" + pve_storage_name: + type: "str" + description: "LVM volume group name" + default: "pve" + pve_storage_pool: + type: "str" + description: "LVM thin pool name within the volume group" + default: "data" diff --git a/roles/pve-storage/meta/main.yml b/roles/pve-storage/meta/main.yml new file mode 100644 index 00000000..f3ba634b --- /dev/null +++ b/roles/pve-storage/meta/main.yml @@ -0,0 +1,12 @@ +--- +dependencies: + - role: "pve" +galaxy_info: + author: "a14m" + description: "Configure LVM thin pool and register local-lvm storage in Proxmox VE" + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/pve-storage/tasks/main.yml b/roles/pve-storage/tasks/main.yml new file mode 100644 index 00000000..7fb66b87 --- /dev/null +++ b/roles/pve-storage/tasks/main.yml @@ -0,0 +1,31 @@ +--- +- name: "Create LVM volume group for PVE storage" + become: true + community.general.lvg: + vg: "{{ pve_storage_name }}" + pvs: "{{ pve_storage_device }}" + state: present + tags: + - "molecule-notest" + +- name: "Create LVM thin pool for PVE storage" + become: true + community.general.lvol: + vg: "{{ pve_storage_name }}" + lv: "{{ pve_storage_pool }}" + size: "100%FREE" + opts: "--type thin-pool" + shrink: false + state: present + tags: + - "molecule-notest" + +- name: "Register local-lvm storage in PVE" + become: true + ansible.builtin.command: + cmd: "pvesm add lvmthin local-lvm --vgname {{ pve_storage_name }} --thinpool {{ pve_storage_pool }}" + register: pve_pvesm_add + changed_when: pve_pvesm_add.rc == 0 + failed_when: pve_pvesm_add.rc != 0 and 'already defined' not in pve_pvesm_add.stderr + tags: + - "molecule-notest" diff --git a/roles/pve/defaults/main.yml b/roles/pve/defaults/main.yml index c2bca151..c9047655 100644 --- a/roles/pve/defaults/main.yml +++ b/roles/pve/defaults/main.yml @@ -2,5 +2,3 @@ pve_repo: "no-subscription" pve_admin_user: "admin" pve_admin_password: "changeme" -pve_lvm_device: "/dev/sda4" -pve_lvm_vg_name: "pve" diff --git a/roles/pve/meta/argument_specs.yml b/roles/pve/meta/argument_specs.yml index ab9f22c6..195ca146 100644 --- a/roles/pve/meta/argument_specs.yml +++ b/roles/pve/meta/argument_specs.yml @@ -17,11 +17,3 @@ argument_specs: type: "str" description: "PVE realm admin password" default: "changeme" - pve_lvm_device: - type: "str" - description: "Block device for PVE LVM volume group (e.g. /dev/sda4)" - default: "/dev/sda4" - pve_lvm_vg_name: - type: "str" - description: "LVM volume group name — PVE auto-detects VG named 'pve' as local-lvm storage" - default: "pve" diff --git a/roles/pve/tasks/main.yml b/roles/pve/tasks/main.yml index 7a314325..30304e85 100644 --- a/roles/pve/tasks/main.yml +++ b/roles/pve/tasks/main.yml @@ -61,14 +61,6 @@ tags: - "molecule-notest" -- name: "Create LVM volume group for PVE storage" - become: true - ansible.builtin.command: - cmd: "vgcreate {{ pve_lvm_vg_name }} {{ pve_lvm_device }}" - creates: "/dev/{{ pve_lvm_vg_name }}" - tags: - - "molecule-notest" - - name: "Enable and start Proxmox VE services" become: true ansible.builtin.systemd_service: -- cgit v1.2.3