Execution
Date
11 Sep 2025 15:49:28 +0100
Duration
00:00:11.55
Controller
ssh-gw-4.layershift.com
User
root
Versions
Ansible
2.16.11
ara
1.7.3 / 1.7.3
Python
3.10.10
Summary
1
Hosts
9
Tasks
9
Results
1
Plays
1
Files
0
Records
File: /home/ssh-gateway/ansible/kuly/find_if_rpm_db_is_corrupted.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | --- - name: Check RPM Database Integrity hosts: all gather_facts: false tasks: - name: Test 1 - Basic RPM query (should show errors if corrupted) ansible.builtin.command: rpm -q rpm register: rpm_query_test ignore_errors: true changed_when: false # noqa: command-instead-of-module - name: Test 2 - List all packages (common corruption indicator) ansible.builtin.command: rpm -qa register: rpm_list_test ignore_errors: true changed_when: false # noqa: command-instead-of-module - name: Test 3 - Query specific system file (detects DB issues) ansible.builtin.command: rpm -qf /etc/os-release register: rpm_file_query ignore_errors: true changed_when: false # noqa: command-instead-of-module - name: Test 4 - Verify RPM database integrity ansible.builtin.command: rpm -Va rpm register: rpm_verify ignore_errors: true changed_when: false # noqa: command-instead-of-module - name: Test 5 - Try DNF operation (shows higher-level errors) ansible.builtin.command: dnf list installed rpm register: dnf_test ignore_errors: true changed_when: false - name: Test 6 - Check for database lock issues ansible.builtin.command: rpm -q yum register: rpm_lock_test ignore_errors: true changed_when: false # noqa: command-instead-of-module - name: Check for specific error patterns in outputs ansible.builtin.set_fact: has_errors: >- {{ (rpm_query_test.stderr | length > 0 and 'error' in rpm_query_test.stderr | lower) or (rpm_list_test.stderr | length > 0 and 'error' in rpm_list_test.stderr | lower) or (rpm_file_query.stderr | length > 0 and 'error' in rpm_file_query.stderr | lower) or (dnf_test.stderr | length > 0 and ('error' in dnf_test.stderr | lower or 'db' in dnf_test.stderr | lower)) or (rpm_lock_test.stderr | length > 0 and 'lock' in rpm_lock_test.stderr | lower) }} - name: Display detailed error information ansible.builtin.debug: msg: | RPM Corruption Check Results: 1. rpm -q rpm: RC: {{ rpm_query_test.rc }} STDERR: {{ rpm_query_test.stderr | default('') }} 2. rpm -qa: RC: {{ rpm_list_test.rc }} STDERR: {{ rpm_list_test.stderr | default('') }} 3. rpm -qf /etc/os-release: RC: {{ rpm_file_query.rc }} STDERR: {{ rpm_file_query.stderr | default('') }} 4. rpm -Va rpm: RC: {{ rpm_verify.rc }} STDERR: {{ rpm_verify.stderr | default('') }} 5. dnf list installed rpm: RC: {{ dnf_test.rc }} STDERR: {{ dnf_test.stderr | default('') }} CORRUPTION DETECTED: {{ 'YES' if has_errors else 'NO' }} - name: Announce corruption with actual error messages ansible.builtin.debug: msg: | ========================================== RPM DATABASE CORRUPTION DETECTED! ========================================== Host: {{ inventory_hostname }} Error Details: {% if 'error' in rpm_query_test.stderr | lower %} - rpm -q rpm failed: {{ rpm_query_test.stderr }} {% endif %} {% if 'error' in rpm_list_test.stderr | lower %} - rpm -qa failed: {{ rpm_list_test.stderr }} {% endif %} {% if 'error' in rpm_file_query.stderr | lower %} - rpm -qf failed: {{ rpm_file_query.stderr }} {% endif %} {% if 'error' in dnf_test.stderr | lower or 'db' in dnf_test.stderr | lower %} - dnf operation failed: {{ dnf_test.stderr }} {% endif %} Common fix commands: 1. rm -f /var/lib/rpm/__db* 2. rpm --rebuilddb 3. Verify: rpm -qa | head -10 ========================================== when: has_errors |