-
Epic
-
Resolution: Unresolved
-
Undefined
-
None
-
[Epic]: "Make sure required packages are installed' task fails because Blivet requires the kmod-kvdo package, which is no longer available on RHEL-10
-
Critical
-
Red Hat Enterprise Linux
-
0% To Do, 0% In Progress, 100% Done
-
rhel-sst-system-roles
-
False
-
-
No
-
Dev ack
-
-
Unspecified
-
Unspecified
-
Unspecified
What were you trying to do that didn't work?
The Ansible task for installing required packages in rhel-system-roles.storage fails because kmod-kvdo is no longer available on RHEL-10. However, blivet still lists kmod-kvdo as a required package https://github.com/linux-system-roles/storage/blob/main/library/blivet.py#L607C3-L607C50.
What is the impact of this issue to you?
Unable to create an lvmvdo volume on RHEL-10 using rhel-system-roles unless the 'Make sure required packages are installed' task is skipped.
Please provide the package NVR for which the bug is seen:
rhel-system-roles-1.95.5-0.1
How reproducible is this bug?:
always
Steps to reproduce
- Run an Ansible playbook that includes rhel-system-roles.storage and attempts to create an lvmvdo volume with compression and deduplication enabled on a RHEL-10 system.
--- - name: Manage local storage hosts: all become: true tasks: - name: Create LVM-VDO volume under volume group 'myvg' ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_pools: - name: myvg disks: - /dev/sda volumes: - name: mylv1 compression: true deduplication: true vdo_pool_size: 10 GiB size: 30 GiB mount_point: /mnt/app/shared
Expected results
The Ansible playbook should successfully create an lvmvdo volume with compression and deduplication enabled.
Actual results
ansible-playbook -vv -i /root/inventory /root/playbook.yml ansible-playbook [core 2.14.18] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.9/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible-playbook python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True Using /etc/ansible/ansible.cfg as config file Skipping callback 'default', as we already have a stdout callback. Skipping callback 'minimal', as we already have a stdout callback. Skipping callback 'oneline', as we already have a stdout callback. PLAYBOOK: playbook.yml ********************************************************* 1 plays in /root/playbook.yml PLAY [Manage local storage] **************************************************** TASK [Gathering Facts] ********************************************************* task path: /root/playbook.yml:2 ok: [storageqe-76.lab.eng.brq2.redhat.com] TASK [Create LVM-VDO volume under volume group 'myvg'] ************************* task path: /root/playbook.yml:6 TASK [rhel-system-roles.storage : Set platform/version specific variables] ***** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main.yml:2 included: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/set_vars.yml for storageqe-76.lab.eng.brq2.redhat.com TASK [rhel-system-roles.storage : Ensure ansible_facts used by role] *********** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/set_vars.yml:2 skipping: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "skip_reason": "Conditional result was False"} TASK [rhel-system-roles.storage : Set platform/version specific variables] ***** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/set_vars.yml:8 skipping: [storageqe-76.lab.eng.brq2.redhat.com] => (item=RedHat.yml) => {"ansible_loop_var": "item", "changed": false, "item": "RedHat.yml", "skip_reason": "Conditional result was False"} skipping: [storageqe-76.lab.eng.brq2.redhat.com] => (item=RedHat.yml) => {"ansible_loop_var": "item", "changed": false, "item": "RedHat.yml", "skip_reason": "Conditional result was False"} ok: [storageqe-76.lab.eng.brq2.redhat.com] => (item=RedHat_10.yml) => {"ansible_facts": {"blivet_package_list": ["python3-blivet", "libblockdev-crypto", "libblockdev-dm", "libblockdev-fs", "libblockdev-lvm", "libblockdev-mdraid", "libblockdev-swap", "xfsprogs", "stratisd", "stratis-cli", "{{ 'libblockdev-s390' if ansible_architecture == 's390x' else 'libblockdev' }}", "vdo"]}, "ansible_included_var_files": ["/usr/share/ansible/roles/rhel-system-roles.storage/vars/RedHat_10.yml"], "ansible_loop_var": "item", "changed": false, "item": "RedHat_10.yml"} skipping: [storageqe-76.lab.eng.brq2.redhat.com] => (item=RedHat_10.0.yml) => {"ansible_loop_var": "item", "changed": false, "item": "RedHat_10.0.yml", "skip_reason": "Conditional result was False"} TASK [rhel-system-roles.storage : Check if system is ostree] ******************* task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/set_vars.yml:26 ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "stat": {"exists": false}} TASK [rhel-system-roles.storage : Set flag to indicate system is ostree] ******* task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/set_vars.yml:31 ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"ansible_facts": {"__storage_is_ostree": false}, "changed": false} TASK [rhel-system-roles.storage : Define an empty list of pools to be used in testing] *** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main.yml:5 ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"ansible_facts": {"_storage_pools_list": []}, "changed": false} TASK [rhel-system-roles.storage : Define an empty list of volumes to be used in testing] *** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main.yml:9 ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"ansible_facts": {"_storage_volumes_list": []}, "changed": false} TASK [rhel-system-roles.storage : Include the appropriate provider tasks] ****** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main.yml:13 included: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml for storageqe-76.lab.eng.brq2.redhat.com TASK [rhel-system-roles.storage : Make sure blivet is available] *************** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:2 ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "msg": "Nothing to do", "rc": 0, "results": []} TASK [rhel-system-roles.storage : Show storage_pools] ************************** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:11 ok: [storageqe-76.lab.eng.brq2.redhat.com] => { "storage_pools": [ { "disks": [ "/dev/sda" ], "name": "myvg", "volumes": [ { "compression": true, "deduplication": true, "mount_point": "/mnt/app/shared", "name": "mylv1", "size": "30 GiB", "vdo_pool_size": "10 GiB" } ] } ] } TASK [rhel-system-roles.storage : Show storage_volumes] ************************ task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:16 ok: [storageqe-76.lab.eng.brq2.redhat.com] => { "storage_volumes": "VARIABLE IS NOT DEFINED!: 'storage_volumes' is undefined. 'storage_volumes' is undefined" } TASK [rhel-system-roles.storage : Get required packages] *********************** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:21 [WARNING]: Module invocation had junk after the JSON data: sys:1: DeprecationWarning: builtin type swigvarlink has no __module__ attribute ok: [storageqe-76.lab.eng.brq2.redhat.com] => {"actions": [], "changed": false, "crypts": [], "leaves": [], "mounts": [], "packages": ["kmod-kvdo", "lvm2", "vdo"], "pools": [], "volumes": []} TASK [rhel-system-roles.storage : Enable copr repositories if needed] ********** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:34 included: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/enable_coprs.yml for storageqe-76.lab.eng.brq2.redhat.com TASK [rhel-system-roles.storage : Check if the COPR support packages should be installed] *** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/enable_coprs.yml:2 skipping: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "skipped_reason": "No items in the list"} TASK [rhel-system-roles.storage : Make sure COPR support packages are present] *** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/enable_coprs.yml:13 skipping: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "skip_reason": "Conditional result was False"} TASK [rhel-system-roles.storage : Enable COPRs] ******************************** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/enable_coprs.yml:20 skipping: [storageqe-76.lab.eng.brq2.redhat.com] => {"changed": false, "skipped_reason": "No items in the list"} TASK [rhel-system-roles.storage : Make sure required packages are installed] *** task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:41 fatal: [storageqe-76.lab.eng.brq2.redhat.com]: FAILED! => {"changed": false, "failures": ["No package kmod-kvdo available."], "msg": "Failed to install some of the specified packages", "rc": 1, "results": []} PLAY RECAP ********************************************************************* storageqe-76.lab.eng.brq2.redhat.com : ok=13 changed=0 unreachable=0 failed=1 skipped=4 rescued=0 ignored=0
- links to