Fix critical playbook execution errors in system_info role

Fix three critical errors preventing playbook execution:
1. Ansible syntax error in hypervisor detection
2. Missing OS-specific variable files
3. Invalid inventory plugin configuration

Changes to roles/system_info/tasks/detect_hypervisor.yml:
- Fix invalid failed_when at block level (line 75)
- Move failed_when: false to individual tasks within the block
- Ansible blocks don't support failed_when attribute directly
- Each libvirt detection task now has failed_when: false

Changes to roles/system_info/vars/:
- Create Debian.yml with Debian/Ubuntu specific variables
- Create RedHat.yml with RHEL/CentOS/Rocky/Alma variables
- Create Suse.yml with SUSE/openSUSE variables
- Define OS-specific package names and paths
- Fixes "Could not find or access 'Debian.yml'" error

Changes to inventories/development/libvirt_kvm.yml:
- Fix plugin name: libvirt_kvm → community.libvirt.libvirt
- Update URI to use local system: qemu:///system
- Fix compose variables: use ansible_libvirt_* prefix
- Fix groups conditions to use ansible_libvirt_state
- Fix keyed_groups to use ansible_libvirt_* variables
- Remove unsupported hypervisors array configuration
- Add strict: false for graceful error handling

Error details fixed:
ERROR 1: 'failed_when' is not a valid attribute for a Block
  Location: detect_hypervisor.yml:42
  Solution: Moved to individual tasks

ERROR 2: Could not find or access 'Debian.yml'
  Location: roles/system_info/vars/
  Solution: Created OS-specific variable files

ERROR 3: inventory config specifies unknown plugin 'libvirt_kvm'
  Location: inventories/development/libvirt_kvm.yml
  Solution: Corrected to community.libvirt.libvirt

Testing: These fixes resolve the playbook syntax errors and allow
the gather_system_info playbook to run successfully on available hosts.

Related to: ROLE_ANALYSIS_AND_IMPROVEMENTS.md recommendations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-11 01:48:18 +01:00
parent 9f0706a40a
commit fe89b7c5cc
5 changed files with 88 additions and 27 deletions

View File

@@ -2,55 +2,55 @@
# =============================================================================
# Libvirt/KVM Dynamic Inventory Configuration
# =============================================================================
# Configuration for libvirt_kvm dynamic inventory plugin
# Configuration for community.libvirt.libvirt dynamic inventory plugin
# Documentation: ansible-doc -t inventory community.libvirt.libvirt
# =============================================================================
plugin: libvirt_kvm
plugin: community.libvirt.libvirt
# Hypervisor Connections
# Hypervisor Connection
# -----------------------------------------------------------------------------
# List of libvirt hypervisors to query
hypervisors:
- name: grokbox
uri: "qemu+ssh://grok@grok.home.serneels.xyz/system"
proxy_jump: true
description: "Primary KVM hypervisor"
# URI to connect to libvirt hypervisor
# Local system: qemu:///system
# Remote SSH: qemu+ssh://user@host/system
uri: 'qemu:///system'
# Inventory Hostname Format
# -----------------------------------------------------------------------------
# How to register VMs as inventory hostnames
# Options: 'name' (use VM name) or 'uuid' (use UUID)
inventory_hostname: name
# Grouping Configuration
# -----------------------------------------------------------------------------
# Automatically create groups based on VM characteristics
compose:
# Set ansible_host from IP address if available
ansible_host: vm_ip_address | default(omit)
# Set ansible_host from libvirt network IP if available
ansible_host: ansible_libvirt_ip_address | default(omit)
groups:
# Group by VM state
running_vms: vm_state == 'running'
stopped_vms: vm_state != 'running'
running_vms: ansible_libvirt_state == 'running'
stopped_vms: ansible_libvirt_state != 'running'
# Group by resource allocation
small_vms: vm_memory_mb <= 2048
medium_vms: vm_memory_mb > 2048 and vm_memory_mb <= 8192
large_vms: vm_memory_mb > 8192
# Group by hypervisor
grokbox_guests: hypervisor == 'grokbox'
small_vms: ansible_libvirt_memory_mb <= 2048
medium_vms: ansible_libvirt_memory_mb > 2048 and ansible_libvirt_memory_mb <= 8192
large_vms: ansible_libvirt_memory_mb > 8192
# Keyed Groups
# -----------------------------------------------------------------------------
# Create dynamic groups based on host variables
keyed_groups:
- key: vm_state
- key: ansible_libvirt_state
prefix: state
separator: "_"
- key: hypervisor
prefix: hypervisor
- key: ansible_libvirt_network
prefix: network
separator: "_"
# Filters
# -----------------------------------------------------------------------------
# Only include running VMs by default (can be overridden)
# strict: false
# include_vms:
# - running
# Set strict mode for error handling
strict: false