Introduction to Cloud Computing
This is how I built a private cloud using OpenStack (MicroStack).
For more detailed and informative content, you can visit this Notion page:
https://m3dh4t.notion.site/Introduction-to-Cloud-Computing-2bef4300eb358009a81de3a5327489f1?source=copy_link
Where OpenStack Fits In
OpenStack = Open-source software to build your own private cloud
- AWS/Azure/Google use proprietary (closed) software
- OpenStack is open-source - anyone can use it free
MicroStack = OpenStack packaged to run on one machine for learning
Think of it as:AWS is iPhone (closed ecosystem, easy to use)
OpenStack is Android (open, customizable, run anywhere)
You're about to install your own mini private cloud!
MicroStack Learning Journey
1. System Requirements & Pre-Installation
Hardware Check:
verify that ur system support virtualization ( because this openstack will make vms )
use this command
egrep -c '(vmx|svm)' /proc/cpuinfo
2. Installation Process
Step 2.1: Update System
Command:
2. Installation Process
Step 2.1: Update System
Command:
Step 2.3: Verify Installation
Command:
Step 2.4: Initialize MicroStack
Here’s exactly what happens under the hood when you run:
microstack init --auto --control
This command initializes and configures MicroStack (a single-node OpenStack distribution) to act as the control node.
Below is the step-by-step process.
What Actually Happens During microstack init --auto --control
MicroStack performs automated OpenStack deployment using snaps. The process includes:
Pre-checks & Environment Setup
- CPU support (VT-x/AMD-V)
- Memory and disk space
- Snap services status
- Network interfaces availability
- Whether this node should act as the controller Database (MariaDB/Galera) Initialization
It sets up the main OpenStack database:
- Creates the MariaDB instance inside the MicroStack snap
- Secures it with random passwords
- Prepares OpenStack schema for services (Nova, Keystone, Neutron, etc.)
Message Queue Setup (RabbitMQ)

MicroStack deploys a RabbitMQ service internally:
- Generates a RabbitMQ user
- Sets service permissions
- Ensures services can communicate through the message bus
This is essential for Nova, Neutron, and other components.
Identity Service Setup (Keystone)

Keystone is the authentication system.
The init process:
- Creates service users (nova, neutron, glance…)
- Creates API endpoints (public/admin/internal)
- Configures authentication tokens
- Creates the admin project and admin user
- Writes clouds.yaml credentials
Image Service (Glance) Setup
- Creates Glance DB tables
- Prepares local image storage
- Enables the Glance API service
Later you can upload images like cirrosudo snap services microstack or
subuntu.
Compute Service (Nova) Setup
- API
- Scheduler
- Conductor
- Compute service (libvirt/KVM)
The init:
- Creates Nova databases
- Registers compute node
- Configures libvirt
- Ensures hypervisor is working (KVM/QEMU)
Neutron Networking Setup

Networking is the biggest step.
Init configures:
- Open vSwitch
- Router and DHCP agents
- Metadata service
- Bridge interfaces
- NAT on the host
Default networks created (when using --auto):
- External network (10.20.20.0/24)
- Internal network
- A router connecting them
Horizon Dashboard Setup
The web UI is prepared:
- Django configuration
- Static files build
- Apache2 service start
- Generates admin password
Horizon (Dashboard) Setup for MicroStack
install :
sudo apt install -y openstack-dashboard
• Configure /etc/openstack-dashboard/local_settings.py →
OPENSTACK_HOST = "10.20.20.1" ( this is the microstack ip)
• Restart Apache:
sudo systemctl restart apache2

else the process is opened in nginx and in port https/443

Systemd Services Start
All OpenStack services are launched:
- nova-*
- neutron-*
- glance-*
- keystone
- horizon
- ovs-switch
- rabbitmq
3. First Login & Dashboard Overview
Step 3.1: Get Credentials
Command:
snap get microstack config.credentials.keystone-pasword
Step 3.3: Access Dashboard
Step 3.4: Explore Dashboard Sections
Instances :
Network Topolgy:
4. Creating Your First VM (CLI Method)
Step 4.1: List Available Images
Command:
Step 4.2: Launch First VM
Command:
microstack launch cirros --name mohamedlakhar_vm
Step 4.3: Verify VM is Running
Command:
microstack.openstack server list

( we can delete the vm called my-first-vm because of the error)
using the command :
microstack.openstack server delete (name of the vm) my-first-vm
VM Details:
- Name:
mohamedlakhdar_vm - Status: ACTIVE
- IP Address:
[10.20.20.174] - Networks:192.168.222.79, 10.20.20.174
Step 4.4: Get VM Details
Command:
microstack.openstack server show mohamedlakhdar_vm
Key Information Found:
Status & Configuration:
-
Status:
ACTIVE✅ (VM is running successfully!) -
Power State:
Running -
VM State:
active -
Task State:
None(no operations in progress)
Network Details:
-
IP Address:
192.168.222.79(external) and10.20.20.174(internal) -
Networks:
test=192.168.222.79, 10.20.20.174 -
Hostname:
cloud
Hardware Specifications:
-
Flavor:
m1.tiny(1 VCPU, small VM) -
Disk Config:
MANUAL
Image Used:
-
Image:
cirros(37fde813-a9c0-474a-951c-d58a4d758b97) - This is the lightweight Linux test image
Timestamps:
-
Created:
2025-12-04T15:27:02Z(December 4, 2025 at 15:27) -
Launched at:
2025-12-04T15:27:35.000000 -
Updated:
2025-12-04T15:27:36Z - Boot time: ~34 seconds (from creation to running)
Security & Access:
-
Security Groups:
name='default' -
Key Name:
microstack - Config Drive: Enabled
Unique Identifiers:
-
Instance ID:
567a21b8-a6bc-4c40-a8e5-c73aa2a55927 -
Host ID:
dd69076b32617bc60e7995810742...(long hash) -
Project ID:
764273cf46ff40d486c2786ddbf43624
What This Tells Me:
VM is fully operational
- Status is ACTIVE
- Has both internal and external IP addresses
- Running for less than a minute
- No errors or issues
Network is configured correctly
- VM has connectivity to the "test" network
- Has two IPs (internal subnet + external access)
Ready for SSH access
- Can now connect via:
ssh cirros@192.168.222.79orssh cirros@10.20.20.174 - Default password:
gocubsgo
My Observations:
- "First VM created successfully via CLI!"
- "Boot time was very fast (~34 seconds)"
- "VM has proper network connectivity with two IPs"
- "Instance name includes my username 'mohamedlakhdar' - personalized!"
Step 4.6: SSH into VM
Command:
ssh cirros@10.20.20.174
# Password: gocubsgo
5. Creating Your Second VM (GUI Method)
Step 5.1: Navigate to Launch Instance

Path: Dashboard → Compute → Instances → Launch Instance
Step 5.2: Instance Details Tab
Step 5.3: Source Tab
- Boot Source: Image
- Create New Volume: No
- Image: cirros
test for example.

we can leave everything in default ( network ports ( will be ssh ) … ) and launch instance.
Step 5.6: Launch & Monitor

6. Networking & VM Communication
Step 6.1: View Network Topology
graph :

topology of the 2 machine in the same network :

Step 6.2: Test VM-to-VM Communication

What this proves:
- [x] Virtual network is working
- [x] VMs can communicate
- [x] Network isolation is functional
Step 6.3: Check Network Details






















Top comments (0)