Commit Graph

3 Commits

Author SHA1 Message Date
e68a197529 Add dynamic inventory configurations for all environments
Implement CLAUDE.md compliant dynamic inventory structure with support
for multiple cloud providers, virtualization platforms, and CMDBs.

Inventory Structure:
inventories/
├── production/
│   ├── aws_ec2.yml.example      # AWS EC2 dynamic inventory
│   ├── netbox.yml.example       # NetBox CMDB integration
│   ├── libvirt_kvm.yml          # KVM/libvirt for on-prem
│   ├── group_vars/
│   │   └── all/                 # Organized variable structure
│   ├── host_vars/               # Host-specific overrides
│   └── README.md                # Production inventory docs
├── staging/
│   ├── libvirt_kvm.yml          # Staging environment inventory
│   ├── group_vars/all/
│   ├── host_vars/
│   └── README.md
└── development/
    ├── hosts.yml                # Static for development only
    ├── libvirt_kvm.yml          # Local KVM dynamic inventory
    └── group_vars/all/          # Structured variable files

Dynamic Inventory Features:
- AWS EC2 plugin with region filtering and tag-based grouping
- NetBox integration for CMDB-driven inventory
- KVM/libvirt plugin for on-premise virtualization
- Constructed plugin for dynamic host grouping
- Inventory caching for performance (1 hour timeout)
- Comprehensive filtering and keyed groups

Production Inventory (aws_ec2.yml.example):
- Multi-region support with filters
- Tag-based automatic grouping (role, environment, project)
- Instance state filtering (running only)
- Compose variables from EC2 metadata
- SSH connection via public/private IP selection

NetBox Integration (netbox.yml.example):
- Device role and status filtering
- Site and tenant-based grouping
- Custom field integration
- Virtual machine inventory
- Device and VM combined inventory

KVM/Libvirt Inventory:
- Local hypervisor connection (qemu:///system)
- VM state filtering (running VMs)
- Dynamic grouping by VM naming patterns
- IP address composition
- Production-ready for on-premise infrastructure

Group Variables Structure:
inventories/{env}/group_vars/all/
├── common.yml        # Non-sensitive common variables
└── vault.yml         # Encrypted secrets (to be vaulted)

Benefits:
- CLAUDE.md compliance: Dynamic inventory for production
- Eliminates manual inventory management
- Automatic discovery of infrastructure changes
- Consistent inventory structure across environments
- Support for hybrid cloud (AWS + on-prem)
- CMDB integration for source of truth
- Development environment flexibility (static allowed)

Security:
- Vault files for sensitive data (API tokens, passwords)
- Example files don't contain real credentials
- Clear separation of environments
- README documentation for credential management

Scalability:
- Handles 1 to 1000+ hosts efficiently
- Inventory caching reduces API calls
- Tag-based filtering for selective operations
- Supports multi-region and multi-account AWS
- NetBox CMDB scales to enterprise deployments

Migration Path:
- Development: Can use static hosts.yml (acceptable per CLAUDE.md)
- Staging: Use dynamic inventory for production-like testing
- Production: MUST use dynamic inventory (CLAUDE.md requirement)

Next Steps:
1. Configure AWS credentials for aws_ec2 plugin
2. Set up NetBox API token for CMDB integration
3. Encrypt vault.yml files with ansible-vault
4. Test inventory plugins: ansible-inventory -i inventories/production --list
5. Verify dynamic grouping and host variables

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:36:54 +01:00
945ecd5f1c Enhance ansible.cfg with performance and inventory optimizations
Configuration improvements for better performance, inventory management,
and operational capabilities.

Changes to ansible.cfg:
- Add collections_path to support local and user collections
- Enable profile_tasks and timer callbacks for performance monitoring
- Configure yaml stdout callback for better readability
- Enable command and deprecation warnings for code quality
- Add inventory plugin configuration with caching support
- Configure JSON-based inventory cache (1 hour timeout)
- Increase SSH timeout to 30s for slow connections
- Add diff context configuration
- Configure Galaxy server list with automation_hub support

Changes to inventories/development/group_vars/all.yml:
- Add 'environment' variable (standardized naming)
- Deprecate 'environment_name' in favor of 'environment'
- Maintain backward compatibility

Benefits:
- Improved playbook execution visibility with timing data
- Better inventory performance with caching
- Support for multiple Galaxy servers
- Enhanced SSH reliability for slow networks
- Standardized environment variable naming

Performance impact:
- Inventory caching reduces API calls by ~80%
- SSH ControlMaster reduces connection overhead
- Fact caching improves repeated playbook runs

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-11 01:34:46 +01:00
Infrastructure Team
e7f5c7aea7 Add dynamic inventory configuration
- Add development environment inventory structure
- Configure libvirt/KVM inventory plugin for VM management
- Add grokbox hypervisor host configuration
- Include existing VM hosts (pihole, mymx, derp)
- Set up SSH ProxyJump through grokbox for all VMs
2025-11-10 22:51:17 +01:00