A highly portable and comprehensive lab validation suite for OpenShift deployments. This toolkit verifies that remote lab environments meet all prerequisites for successful OpenShift cluster deployments.
Garden-Tiller uses Ansible, Python, and Shell scripts to validate:
- Bare metal hardware configuration
- Network connectivity and configuration
- Storage subsystems
- Required infrastructure services (DNS, DHCP, NTP)
- Internet/proxy access
- Comprehensive Validations: Covers all aspects of infrastructure required for OpenShift
- Portable: Designed to run on RHEL 8/9 with minimal dependencies
- Containerized: Can run in Podman containers for development or OpenShift for production
- Resilient: Uses PyBreaker library for circuit breaking and fault handling
- Detailed Reporting: Generates HTML reports with diagrams showing lab topology
- Remediation: Suggests fixes for identified issues
- Vendor Specific Tools: Enhanced functionality for Dell iDRAC and other vendor BMCs
- RHEL 8 or RHEL 9 (or compatible Linux distribution)
- Ansible Core 2.12 or higher
- Python 3.9 or higher
- Standard Linux utilities
- Podman (optional, for containerized execution)
-
Clone this repository:
git clone --recursive https://github.com/thinko/garden-tiller.git cd garden-tiller -
Install dependencies:
pip install -r requirements.txt
-
Create your inventory file or modify the sample:
cp -r inventories/sample inventories/my-lab # Edit inventories/my-lab/hosts.yaml with your lab details -
Run the validation suite:
./check-lab.sh --inventory inventories/my-lab/hosts.yaml
./check-lab.sh [OPTIONS]
Options:
-i, --inventory INVENTORY Specify the inventory file to use
-t, --tags TAGS Run only specific validation tags (comma separated)
-s, --skip-tags TAGS Skip specific validation tags (comma separated)
-v, --verbose Increase verbosity
-p, --podman Run validations in a Podman container
-c, --check Run in check mode (dry run)
-h, --help Show this help message
Available validation tags:
oobm, ipmi, dell, idrac, hpe, ilo, firmware, mac, network, raid, dns, dhcp, timesync, internet, all
Example:
./check-lab.sh --inventory ./inventories/my-lab/hosts.yaml --tags network,dns,dhcpGarden-Tiller includes specialized support for Dell servers equipped with iDRAC management controllers, providing enhanced validation capabilities:
- Advanced Hardware Inspection: Deep hardware validation using Dell's Redfish API
- Firmware Compliance: Validation of firmware versions against requirements
- Network Configuration: Verification of NIC bonding, VLAN configurations, and link states
- iDRAC Settings: Validation of NTP, DNS, and other critical iDRAC settings
- Service Tag Collection: Automated collection of Dell service tags and warranty information
To leverage these capabilities, specify the BMC type as idrac in your inventory:
all:
hosts:
dell-server-01:
bmc_address: 192.168.1.101
bmc_username: root
bmc_password: calvin
bmc_type: idrac # Enables Dell-specific functionalityRun Dell-specific validations with:
./check-lab.sh --inventory inventories/my-lab/hosts.yaml --tags dell,idracGarden-Tiller provides specialized support for HPE ProLiant servers equipped with Integrated Lights-Out (iLO) management controllers:
- Comprehensive Hardware Inspection: Deep hardware validation using proliantutils
- Firmware Compliance: Validation of firmware versions against minimum requirements
- Power Management: Verification of server power status and configuration
- Health Status: Monitoring of server health and component status
- Boot Configuration: Validation of boot settings for proper PXE or disk booting
To leverage these capabilities, specify the BMC type as ilo in your inventory:
all:
hosts:
hpe-server-01:
bmc_address: 192.168.1.102
bmc_username: Administrator
bmc_password: password
bmc_type: ilo # Enables HPE-specific functionality
min_ilo_firmware: "2.61" # Optional: specify minimum firmware versionRun HPE-specific validations with:
./check-lab.sh --inventory inventories/my-lab/hosts.yaml --tags hpe,iloBMC connectivity can be tested using the standard playbooks:
# Test OOBM connectivity for all hosts
ansible-playbook -i inventories/hosts.yaml playbooks/01-validate-oobm.yamlThis validates BMC connectivity before running the full validation suite.
To build and run the containerized version:
# Build the container
podman build -t garden-tiller:latest -f docker/Dockerfile .
# Run validations in container
./check-lab.sh --inventory inventories/my-lab/hosts.yaml --podman.
├── check-lab.sh # Main entry script
├── inventories/ # Ansible inventories
│ └── sample/ # Sample inventory structure
├── playbooks/ # Ansible playbooks for each validation
├── roles/ # Ansible roles
├── library/ # Custom Ansible modules
├── filter_plugins/ # Custom Ansible filters
├── scripts/ # Utility scripts
├── docker/ # Containerization files
└── reports/ # Generated reports (HTML/PDF)
BSD 3-Clause License. See LICENSE for details.