Files
infra-automation/inventories/development/libvirt_kvm.yml
ansible fe89b7c5cc 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>
2025-11-11 01:48:18 +01:00

57 lines
2.0 KiB
YAML

---
# =============================================================================
# Libvirt/KVM Dynamic Inventory Configuration
# =============================================================================
# Configuration for community.libvirt.libvirt dynamic inventory plugin
# Documentation: ansible-doc -t inventory community.libvirt.libvirt
# =============================================================================
plugin: community.libvirt.libvirt
# Hypervisor Connection
# -----------------------------------------------------------------------------
# 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 libvirt network IP if available
ansible_host: ansible_libvirt_ip_address | default(omit)
groups:
# Group by VM state
running_vms: ansible_libvirt_state == 'running'
stopped_vms: ansible_libvirt_state != 'running'
# Group by resource allocation
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: ansible_libvirt_state
prefix: state
separator: "_"
- key: ansible_libvirt_network
prefix: network
separator: "_"
# Filters
# -----------------------------------------------------------------------------
# Set strict mode for error handling
strict: false