A streamlined OpenStack deployment project using Kolla-Ansible for rapid cloud infrastructure setup. This project provides a "Hail Mary" approach to quickly deploy a functional OpenStack cloud with minimal complexity.
Hail Mary is designed to deploy OpenStack using Kolla-Ansible in a simplified, production-ready configuration. It automates the entire deployment process from initial server setup to a fully functional OpenStack cloud.
- Automated Server Setup: Creates necessary users and network bridges
- OpenStack Deployment: Deploys core OpenStack services using Kolla-Ansible
- Simplified Configuration: Minimal, focused setup for quick deployment
- Production-Ready: Uses proven Kolla-Ansible technology with best practices
βββββββββββββββββββ βββββββββββββββββββ
β Controller β β Compute β
β (server1) β β (server2) β
βββββββββββββββββββ€ βββββββββββββββββββ€
β β’ Keystone β β β’ Nova Compute β
β β’ Glance β β β’ Neutron Agent β
β β’ Nova API β β β’ OVS β
β β’ Neutron β β β
β β’ Horizon β β β
β β’ MariaDB β β β
β β’ RabbitMQ β β β
βββββββββββββββββββ βββββββββββββββββββ
- Operating System: Ubuntu 20.04+ or similar Linux distribution
- Python: 3.12 or higher
- SSH Access: Password-less SSH access to target servers
- Network: Public IP addresses for both controller and compute nodes
- Hardware:
- Controller: 8GB+ RAM, 4+ CPUs, 50GB+ storage
- Compute: 8GB+ RAM, 4+ CPUs, 50GB+ storage
- uv - Python package manager
- Ansible
- SSH key pairs for server access
git clone https://github.com/OmGuptaIND/hail-mary.git
cd hail-mary# Install Python dependencies using uv
make installThis will install:
kolla-ansible- OpenStack deployment toolansible- Automation platform- Supporting libraries (
cliff,stevedore,pbr)
Ensure your SSH keys are properly set up in the keys/ directory:
keys/
βββ controller/
β βββ stack # Private key for controller
β βββ controller.pub # Public key for controller
βββ compute/
β βββ stack # Private key for compute
β βββ compute.pub # Public key for compute
βββ stack/
βββ stack # Stack user private key
βββ stack.pub # Stack user public key
Edit kolla-configs/inventory.ini to match your server configuration:
[control]
server1 ansible_host=YOUR_CONTROLLER_IP ansible_user=stack ansible_ssh_private_key_file=/path/to/keys/controller/stack
[compute]
server2 ansible_host=YOUR_COMPUTE_IP ansible_user=stack ansible_ssh_private_key_file=/path/to/keys/compute/stackUpdate kolla-configs/etc/kolla/globals.yml with your network settings:
# Update these IPs to match your environment
kolla_internal_vip_address: "YOUR_CONTROLLER_IP"
kolla_external_vip_address: "YOUR_CONTROLLER_IP"
# Network interface (usually br-ex)
network_interface: "br-ex"
neutron_external_interface: "br-ex"-
Create Stack User
make create-user
This creates the
stackuser on all servers with proper sudo privileges. -
Setup Network Bridge
make create-bridge
Creates the
br-exbridge interface required for OpenStack networking. -
Test Connectivity
make ping
Verifies Ansible can connect to all servers.
-
Bootstrap Servers
make bootstrap
Prepares servers for OpenStack installation (installs Docker, configures services).
-
Run Pre-checks
make prechecks
Validates the environment before deployment.
-
Deploy OpenStack
kolla-ansible deploy --configdir /path/to/hail-mary/kolla-configs/etc/kolla -i /path/to/hail-mary/kolla-configs/inventory.ini
-
Post-deployment Setup
kolla-ansible post-deploy --configdir /path/to/hail-mary/kolla-configs/etc/kolla -i /path/to/hail-mary/kolla-configs/inventory.ini
- Keystone: Identity and authentication service
- Glance: Image service for VM templates
- Nova: Compute service for virtual machines
- Neutron: Networking service with Open vSwitch
- Horizon: Web-based dashboard
- Placement: Resource placement service
- MariaDB: Database backend (standalone mode)
- RabbitMQ: Message queue service
- Provider Networks: Disabled (using tenant networks)
- Network Type: VXLAN for tenant networks, flat for external
- Bridge Interface:
br-exfor external connectivity
- Internal Network: VXLAN-based tenant networks
- External Network: Flat network via
br-exbridge - VIP Address: Single IP for both internal and external access
- Load Balancer: Disabled (single controller setup)
- SSH key-based authentication
- Passwordless sudo for stack user
- Isolated network segments
- Standard OpenStack security groups
hail-mary/
βββ README.md # This file
βββ pyproject.toml # Python dependencies
βββ makefile # Automation commands
βββ ansible.cfg # Ansible configuration
βββ requirements.txt # Python requirements
βββ uv.lock # Dependency lock file
βββ keys/ # SSH keys for servers
βββ kolla-configs/ # Kolla-Ansible configuration
β βββ inventory.ini # Server inventory
β βββ etc/kolla/
β βββ globals.yml # Global OpenStack settings
βββ kolla-ansible/ # Kolla-Ansible source (submodule)
βββ playbooks/ # Custom Ansible playbooks
βββ create-user/ # User setup playbook
βββ create-bridge/ # Network bridge setup
-
SSH Connection Failed
- Verify SSH keys are in the correct location
- Check server connectivity:
ping <server_ip> - Ensure
stackuser exists and has proper permissions
-
Bridge Creation Failed
- Verify the physical interface name (
eno1by default) - Check if OpenVSwitch is installed
- Ensure sufficient privileges for network operations
- Verify the physical interface name (
-
Bootstrap Failed
- Check Docker installation and permissions
- Verify internet connectivity for package downloads
- Review
/var/log/kolla/for detailed error logs
-
Deployment Failed
- Review Ansible output for specific errors
- Check container logs:
docker logs <container_name> - Verify resource requirements (CPU, memory, disk)
# Check container status
docker ps -a
# View Kolla logs
sudo tail -f /var/log/kolla/*.log
# Restart failed containers
docker restart <container_name>
# Clean deployment (start over)
kolla-ansible destroy --yes-i-really-really-mean-it
# Generate admin credentials
kolla-ansible post-deploy
source /etc/kolla/admin-openrc.shAfter successful deployment:
- Horizon Dashboard:
http://<controller_ip>/ - Admin Credentials: Found in
/etc/kolla/admin-openrc.sh - API Endpoints: Listed in the deployment output
- Username:
admin - Password: Generated during deployment (check
/etc/kolla/passwords.yml)
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Submit a pull request with detailed description
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Issues: Report bugs and feature requests on GitHub Issues
- Documentation: Kolla-Ansible Official Docs
- Community: OpenStack Community
- Kolla-Ansible - Official OpenStack deployment tool
- OpenStack - Open source cloud computing platform
- Ansible - Automation platform
Note: This is a simplified deployment suitable for development, testing, and small production environments. For large-scale production deployments, consider additional high-availability and security configurations.