ADR-003: Ansible-based Automation for Agent Installation
Date
2025-03-09
Status
Accepted
Decision Makers
- OpenShift Platform Team
- Automation Team
Context
The OpenShift Agent-Based Installer requires several configuration files and steps to create bootable installation media. Manual creation and management of these configurations can be:
- Error-prone
- Time-consuming
- Difficult to standardize
- Hard to maintain across multiple clusters
Considered Options
1. Manual Configuration
- Pros:
- Direct control over all settings
- No additional dependencies
- Cons:
- Error-prone
- Time-consuming
- Hard to maintain
- No standardization
2. Shell Scripts Only
- Pros:
- Simple to understand
- No additional dependencies
- Direct system interaction
- Cons:
- Limited templating capabilities
- Complex configuration management
- Platform-dependent
3. Ansible Automation (Selected)
- Pros:
- Powerful templating
- Declarative configuration
- Idempotent operations
- Cross-platform support
- Extensive module ecosystem
- Cons:
- Additional dependency (ansible-core)
- Learning curve for Ansible
Decision
Implement an Ansible-based automation approach with:
- Declarative Configuration
./hack/create-iso.sh $FOLDER_NAME
- Use cluster.yml and nodes.yml for configuration
- Generate templates with Ansible
- Create ISO automatically
- Manual Option Preservation
- Keep manual steps documented
- Allow step-by-step execution
- Support custom modifications
- Prerequisites Management
```yaml
Required tools
- ansible-core
- nmstate
- Ansible Collections from requirements.yml ```
Implementation
Directory Structure
playbooks/
├── create-manifests.yml
├── collections/
│ └── requirements.yml
└── templates/
├── agent-config.yml.j2
├── install-config.yml.j2
└── other templates...
Configuration Examples
Located in examples/
directory:
examples/
├── baremetal-example/
├── vmware-example/
└── various configurations...
Usage Patterns
- Declarative Approach
./hack/create-iso.sh $FOLDER_NAME
- Manual Approach
cd playbooks/ ansible-playbook -e "@your-cluster-vars.yml" create-manifests.yml
Consequences
Positive
- Standardized configuration management
- Reduced human error
- Faster deployment
- Maintainable configurations
- Version-controlled templates
Negative
- Additional dependencies
- Initial setup overhead
- Ansible knowledge required
Validation
Configuration Steps
- Validate prerequisites:
dnf install ansible-core nmstate ansible-galaxy install -r playbooks/collections/requirements.yml
- Verify configurations:
- Check cluster.yml and nodes.yml
- Validate template generation
- Test ISO creation
Related
Notes
The automation approach is particularly suited for:
- Repetitive deployments
- Multiple cluster configurations
- Standardized environments
- CI/CD integration
Templates support various deployment types:
- Single-node OpenShift (SNO)
- Three-node compact clusters
- Full HA deployments