Infrastructure Inventory - grokbox
Generated: 2025-11-10
Hypervisor: grokbox (grok.home.serneels.xyz)
Libvirt URI: qemu:///system
Security Model: AppArmor (enforcing)
Summary
| Metric |
Value |
| Total VMs |
3 |
| Running VMs |
3 |
| Stopped VMs |
0 |
| Total vCPUs Allocated |
12 |
| Total Memory Allocated |
20 GB |
| Network |
virbr0 (192.168.122.0/24) |
Virtual Machines
1. derp (Development VM)
Status: ✅ Running (ID: 2)
Configuration
| Property |
Value |
| UUID |
9ede717f-879b-48aa-add0-2dfd33e10765 |
| OS Type |
HVM |
| vCPUs |
2 |
| Memory |
2 GB (2097152 KiB) |
| CPU Time |
33278.4s |
| Autostart |
Enabled |
| Persistent |
Yes |
Network
| Interface |
MAC Address |
IP Address |
Network |
| vnet1 |
52:54:00:d9:b8:0a |
192.168.122.99/24 |
virbr0 (NAT) |
Storage
| Type |
Device |
Target |
Source |
| file |
disk |
vda |
/var/lib/libvirt/images/derp.qcow2 |
| file |
cdrom |
sda |
- |
Security
- Security Model: AppArmor
- Security Label:
libvirt-9ede717f-879b-48aa-add0-2dfd33e10765 (enforcing)
Ansible Access
2. pihole (DNS/DHCP Server)
Status: ✅ Running (ID: 5)
Configuration
| Property |
Value |
| UUID |
6d714c93-16fb-41c8-8ef8-9001f9066b3a |
| OS Type |
HVM |
| vCPUs |
2 |
| Memory |
2 GB (2097152 KiB) |
| CPU Time |
74968.5s |
| Autostart |
Enabled |
| Persistent |
Yes |
Network
| Interface |
MAC Address |
IP Address |
Network |
| vnet4 |
52:54:00:3b:ea:52 |
192.168.122.12/24 |
virbr0 (NAT) |
Storage
| Type |
Device |
Target |
Source |
| file |
disk |
vda |
/var/lib/libvirt/images/pihole.qcow2 |
Security
- Security Model: AppArmor
- Security Label:
libvirt-6d714c93-16fb-41c8-8ef8-9001f9066b3a (enforcing)
Services
- Pi-hole (DNS ad-blocking)
- dnsmasq (DHCP server)
- lighttpd (Web interface)
Ansible Access
3. mymx (Mail Server)
Status: ✅ Running (ID: 21)
Configuration
| Property |
Value |
| UUID |
7cd5a220-bea4-49a1-a44e-a247dbdfd085 |
| OS Type |
HVM |
| vCPUs |
8 |
| Memory |
16 GB (16777216 KiB) |
| CPU Time |
476431.1s |
| Autostart |
Enabled |
| Persistent |
Yes |
Network
| Interface |
MAC Address |
IP Address |
Network |
| vnet20 |
52:54:00:de:fc:e9 |
192.168.122.119/24 |
virbr0 (NAT) |
Storage
| Type |
Device |
Target |
Source |
| file |
disk |
vda |
/var/lib/libvirt/images/mymx.qcow2 |
Security
- Security Model: AppArmor
- Security Label:
libvirt-7cd5a220-bea4-49a1-a44e-a247dbdfd085 (enforcing)
Services
- Postfix (Mail Transfer Agent)
- Dovecot (IMAP/POP3 server)
Ansible Access
Network Configuration
NAT Network (virbr0)
| Property |
Value |
| Network |
192.168.122.0/24 |
| Gateway |
192.168.122.1 (grokbox) |
| DHCP Range |
192.168.122.2 - 192.168.122.254 |
| DNS |
Provided by dnsmasq |
IP Allocation
| VM |
IP Address |
MAC Address |
Status |
| pihole |
192.168.122.12 |
52:54:00:3b:ea:52 |
✅ Active |
| derp |
192.168.122.99 |
52:54:00:d9:b8:0a |
✅ Active |
| mymx |
192.168.122.119 |
52:54:00:de:fc:e9 |
✅ Active |
Resource Allocation Summary
CPU Allocation
| VM |
vCPUs |
CPU Time |
% of Total |
| mymx |
8 |
476431.1s |
66.7% |
| derp |
2 |
33278.4s |
16.7% |
| pihole |
2 |
74968.5s |
16.7% |
| Total |
12 |
584678.0s |
100% |
Memory Allocation
| VM |
Memory |
% of Total |
| mymx |
16 GB |
80% |
| derp |
2 GB |
10% |
| pihole |
2 GB |
10% |
| Total |
20 GB |
100% |
Storage
| VM |
Disk Type |
Location |
Format |
| mymx |
file (qcow2) |
/var/lib/libvirt/images/mymx.qcow2 |
qcow2 |
| derp |
file (qcow2) |
/var/lib/libvirt/images/derp.qcow2 |
qcow2 |
| pihole |
file (qcow2) |
/var/lib/libvirt/images/pihole.qcow2 |
qcow2 |
Security Status
All VMs
- ✅ Security Model: AppArmor enforcing
- ✅ Unique Security Labels: Per-VM isolation
- ✅ Persistent Configuration: All VMs persistent
- ✅ Autostart: All VMs set to autostart
- ✅ Network Isolation: NAT network with gateway
Access Control
- Hypervisor Access: SSH to grokbox (user: grok)
- VM Access: SSH via ProxyJump through grokbox (user: ansible)
- Authentication: SSH key-based (no password auth)
- Privilege Escalation: Passwordless sudo for ansible user
Ansible Integration
Available Inventory Sources
1. Static Inventory
2. Libvirt Dynamic Inventory
3. SSH Config Inventory
Group Memberships
| VM |
Groups |
| derp |
all, kvm_guests, development, running_vms |
| pihole |
all, kvm_guests, dns_servers, running_vms |
| mymx |
all, kvm_guests, mail_servers, running_vms |
Testing Connectivity
Management Commands
VM Lifecycle
VM Information
Snapshots
Maintenance Recommendations
Immediate Actions
- ✅ All VMs running and accessible
- ✅ Network connectivity verified
- ✅ Security models enforcing (AppArmor)
- ⚠️ Consider implementing LVM partitioning per CLAUDE.md on next rebuild
Short-term
-
Backup Strategy
- Implement regular VM snapshots
- Export VM definitions:
virsh dumpxml <vm_name> > <vm_name>.xml
- Backup qcow2 images from
/var/lib/libvirt/images/
-
Monitoring
- Deploy node_exporter on all VMs
- Implement centralized logging
- Set up alerting for resource thresholds
-
Security Hardening
- Run security audit playbooks
- Verify AIDE/auditd installation
- Review and harden SSH configurations
Long-term
-
Infrastructure as Code
- Create Terraform/Pulumi for VM provisioning
- Implement cloud-init templates
- Standardize VM configurations
-
High Availability
- Consider VM clustering
- Implement backup hypervisor
- Set up automated failover
-
Compliance
- Implement CIS benchmark scanning
- Run OpenSCAP compliance checks
- Generate compliance reports
Troubleshooting
Connection Issues
VM Not Starting
Network Issues
References
- CLAUDE.md: Infrastructure guidelines and standards
- docs/inventory.md: Complete inventory documentation
- cheatsheets/inventory.md: Quick reference commands
- SSH Config:
~/.ssh/config - Connection configurations
Last Updated: 2025-11-10
Updated By: Automated infrastructure discovery
Next Review: Weekly or on infrastructure changes