An Ansible-based automation tool for deploying Red Hat OpenStack Services on OpenShift (RHOSO) on baremetal infrastructure in Scale Lab environments, leveraging the Validated Architecture (VA) and Deployment Templates (DT) architecture patterns.
This installer streamlines the deployment of RHOSO by automating the entire process from initial setup to a fully functional OpenStack cloud. It requires minimal user input and handles all the complex orchestration of OpenStack components on OpenShift.
- Automated Deployment: End-to-end automation of RHOSO installation
- Minimal Configuration: Requires only essential parameters like lab type, cloud number, and credentials
- Pre-provisioned Support: Currently supports pre-provisioned External Data Plane Management (EDPM) deployments
- Scale Lab Integration: Optimized for Red Hat Scale Lab environments
- Validated Architecture: Uses proven architecture patterns and best practices
Before running this installer, ensure your environment meets the following requirements:
- OpenShift Cluster: Must be deployed using Jetlag
- Compute Nodes: Should be deployed with RHEL 9.4
- Network Configuration: Proper network setup for OpenStack services
- Storage: Adequate storage configuration for OpenStack workloads
- Ansible: Version 2.9 or higher
- OpenShift CLI (oc): Latest version
- Kustomize: Automatically downloaded during bootstrap
- SSH Access: To baremetal nodes with proper key configuration
Edit the ansible/group_vars/all.yml
file and configure the following mandatory variables:
# Cloud and Lab Configuration
cloud: cloud40 # Cloud identifier (e.g., cloud40)
lab: scalelab # Lab type: scalelab or performancelab
compute_count: 1 # Number of compute nodes
# SSH Configuration
ssh_password: your-password # SSH password for baremetal nodes
ssh_username: cloud-admin # SSH username for baremetal nodes
ssh_key_file: ~/.ssh/id_rsa # SSH private key file path
# Network Configuration
ctlplane_start_ip: 172.16.20.100 # Control plane start IP address
# OpenShift Configuration
ocp_environment:
KUBECONFIG: /root/mno/kubeconfig # Path to kubeconfig file
Additional variables can be configured based on your specific environment needs:
# Architecture Repository
dt_path: /root/test/architecture # Local path for architecture repository
# Nova Migration
nova_migration_key: ~/.ssh/nova_migration # Nova migration SSH key
-
Clone the repository:
git clone <repository-url> cd RHOSO
-
Configure variables:
vim ansible/group_vars/all.yml
-
Run the installer:
ansible-playbook ansible/main.yml
The installer executes the following phases in order:
- Bootstrap Phase: Environment setup and tool installation
- Values Preparation: Generate configuration values for OpenStack components
- EDPM Values Preparation: Prepare External Data Plane Management values
- LVMS Setup: Configure Local Volume Manager Storage
- Common OpenStack Services: Deploy core OpenStack operators
- Control Plane Deployment: Deploy OpenStack control plane services
- Data Plane Deployment: Deploy and configure compute nodes
The installer follows a systematic approach:
- Repository Cloning: Clones the validated architecture repository containing deployment templates
- Environment Analysis: Analyzes your lab environment and generates appropriate configuration
- Custom Resource Generation: Creates Kubernetes Custom Resources (CRs) tailored to your environment
- Orchestrated Deployment: Applies resources in the correct order with proper dependencies
- Validation: Verifies successful deployment and service availability
- Kustomize Templates: Uses Kustomize for template management and customization
- OpenStack Operators: Leverages OpenStack operators for service lifecycle management
- EDPM Integration: Manages External Data Plane nodes for compute services
- Network Configuration: Automated network setup using NNCP (Node Network Configuration Policy)
- Storage Management: Automated storage configuration using LVMS
After successful deployment, the installer automatically:
- Discovers Compute Hosts: Runs
nova-manage cell_v2 discover_hosts
to register compute nodes - Validates Hypervisors: Lists available hypervisors to confirm successful deployment
- Provides Status: Displays deployment status and service availability
- KUBECONFIG Not Found: Ensure the kubeconfig path is correct and accessible
- SSH Authentication: Verify SSH credentials and key file permissions
- Network Connectivity: Check network configuration and firewall settings
- Resource Limits: Ensure sufficient resources (CPU, memory, storage) are available
# Check OpenStack services
oc get pods -n openstack
# Verify hypervisors
oc rsh -n openstack openstackclient openstack hypervisor list
# Check dataplane deployment
oc get openstackdataplanedeployment -n openstack
For issues and questions:
- Check the troubleshooting section above
- Review OpenShift and OpenStack operator logs
- Consult the Red Hat OpenStack Services on OpenShift documentation
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Test your changes thoroughly
- Submit a pull request with detailed description
This project is licensed under the Apache License 2.0. See the LICENSE file for details.