Production-Grade Private Cloud from Bare Metal
A Full-Lifecycle IaaS Deployment Using Canonical MicroCloud on Cisco UCS Infrastructure
A three-node, high-availability private cloud built entirely from bare metal — delivering compute, distributed storage, and software-defined networking, with full real-time observability and secure remote access.
Overview
This project transforms three bare-metal Cisco UCS C220 M5 rack servers into a fully functional Infrastructure-as-a-Service (IaaS) platform using Canonical MicroCloud (LXD + MicroCeph + MicroOVN). It provides the same core capabilities as a public cloud — on-demand virtual machines and containers, resilient distributed storage, and isolated virtual networks — running entirely on self-hosted, open-source infrastructure.
I built this end-to-end: from RAID controller configuration and OS installation, through cluster formation and distributed storage, to a custom monitoring stack and secure remote operation. It doubles as my hands-on preparation for the Certified OpenStack Administrator (COA) certification and my learning path into Canonical's cloud ecosystem.
Architecture
┌─────────────────────────────────────────┐ │ Private Cloud Cluster │ │ (Canonical MicroCloud 2.1.3) │ └─────────────────────────────────────────┘ │ ┌───────────────────────────┼───────────────────────────┐ │ │ │ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐ │ SVR01 │ │ SVR02 │ │ SVR03 │ │ Leader │◄─────────────►│ Voter │◄─────────────►│ Voter │ │ │ │ │ │ │ │ Prometheus│ │ Grafana │ │ │ │ 9 disks* │ │ 9 OSDs │ │ 8 OSDs │ └───────────┘ └───────────┘ └───────────┘ │ │ │ └───────────────────────────┴───────────────────────────┘ LXD (Compute) · Ceph (Storage) · OVN (Network) 17 OSDs · ~19 TiB · HEALTH_OK
- SVR01 storage expansion tracked as a planned enhancement
Technology Stack
| Layer | Technology | Role |
|---|---|---|
| Orchestration | Canonical MicroCloud | Single-command cluster management |
| Compute | LXD | Containers & virtual machines |
| Distributed Storage | MicroCeph (Ceph) | Replicated block storage across nodes |
| Networking | MicroOVN (OVN) | Software-defined tenant networking |
| Operating System | Ubuntu Server 24.04 LTS | Base platform |
| Metrics | Prometheus + Node Exporter | Time-series metrics collection |
| Visualization | Grafana | Custom real-time dashboards |
| Remote Access | Tailscale (WireGuard) | Secure zero-config mesh VPN |
What This Project Demonstrates
- Bare-metal to cloud: full lifecycle deployment with no pre-existing virtualization
- Enterprise hardware: Cisco CIMC, RAID/JBOD configuration, controller-level troubleshooting
- Distributed systems: Ceph storage cluster with replication and quorum management
- Software-defined networking: OVN virtual networks, isolation, NAT, and forwarding
- High availability: workloads and data survive single-node failure
- Observability: custom multi-node monitoring dashboard with dynamic thresholds
- Infrastructure automation: systemd-managed services with auto-recovery on reboot
- Secure operations: encrypted remote management without public internet exposure
- Systematic troubleshooting: 16 documented real-world issues with root-cause analysis
Key Challenges Solved
A few of the real problems I diagnosed and resolved during this build (full details in the Troubleshooting Guide):
| Challenge | Resolution |
|---|---|
| RAID controller invisible to OS despite healthy status in management console | Diagnosed a data-plane vs. management-plane split; resolved with physical card reseat |
| Cluster unreachable remotely after reboot | Traced to disabled IP forwarding on the gateway node; made persistent |
| Monitoring stack lost data on every restart | Converted manual processes to systemd services + persistent container networking + auto-start |
| Containers couldn't reach the internet on the virtual network | Added a dedicated NAT bridge network as a secondary interface |
| Storage database wouldn't start | Identified quorum requirement — cluster needs a majority of nodes online |
The cluster is monitored through a custom "Mission Control" Grafana dashboard featuring:
- Fleet-wide rollups — aggregate CPU, memory, and network across all nodes
- Live cluster heartbeat — real-time CPU pulse per node
- Per-node vitals — CPU, RAM, disk, and load gauges with dynamic thresholds
- Throughput trends — network receive/transmit and memory pressure over time
The importable dashboard definition is included: mission-control-dashboard.json
Documentation
This repository includes complete, reproducible documentation:
- Project Report — full architecture and 7-phase deployment, reproducible on comparable hardware
- Troubleshooting Guide — 16 real issues with symptoms, root causes, and fixes
Project Goals
This was a self-directed project with three aims:
- Master private-cloud infrastructure hands-on, from hardware to observability
- Prepare for the Certified OpenStack Administrator (COA) exam — the concepts (compute, networking, block storage, identity) map directly onto OpenStack
- Build toward a cloud engineering role at Canonical, working with the Ubuntu ecosystem I used throughout
Skills Applied
Cloud Infrastructure · Canonical MicroCloud · LXD · Ceph · OVN · Ubuntu Server · Cisco UCS · CIMC · KVM/Virtualization · Prometheus · Grafana · Linux System Administration · Netplan · systemd · Distributed Storage · Software-Defined Networking · High Availability · Tailscale/WireGuard · Troubleshooting
Contact
Horus Ngu Djomou Sielatshom — Network Technician Building toward Cloud Engineering · Pursuing COA Certification GitHub: github.com/kinghorus12
Built with open-source tools · Documented for reproducibility
