summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-07-03 23:43:17 +0200
committerAhmed Abdelhalim <[email protected]>2026-07-03 23:44:47 +0200
commit97c97e7b9880a90b2e54dd2b5f02aaf65824fb1f (patch)
treed0f0086ead57a6e798aac3038298cc557c30c6cd
parent005c49353a6a71954e6a975a43989ded1786022a (diff)
Refactor pve roles to create storage separately
-rw-r--r--host_vars/pve.local.ymlbin822 -> 827 bytes
-rw-r--r--host_vars/pve.local.yml.example7
-rw-r--r--roles/pve-network/tasks/main.yml5
-rw-r--r--roles/pve-storage/defaults/main.yml4
-rw-r--r--roles/pve-storage/meta/argument_specs.yml16
-rw-r--r--roles/pve-storage/meta/main.yml12
-rw-r--r--roles/pve-storage/tasks/main.yml31
-rw-r--r--roles/pve/defaults/main.yml2
-rw-r--r--roles/pve/meta/argument_specs.yml8
-rw-r--r--roles/pve/tasks/main.yml8
10 files changed, 66 insertions, 27 deletions
diff --git a/host_vars/pve.local.yml b/host_vars/pve.local.yml
index a0465c97..16fb0f37 100644
--- a/host_vars/pve.local.yml
+++ b/host_vars/pve.local.yml
Binary files 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: