DEV Community

invincible under the sun
invincible under the sun

Posted on

openstack

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


MicroStack checks:

  • 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


Glance is initialized:

  • Creates Glance DB tables
  • Prepares local image storage
  • Enables the Glance API service

Later you can upload images like cirrosudo snap services microstack
s
or ubuntu.


Compute Service (Nova) Setup


Nova processes:

  • 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
Enter fullscreen mode Exit fullscreen mode

• 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 :


Images:

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

Enter fullscreen mode Exit fullscreen mode

Step 4.3: Verify VM is Running

Command:

microstack.openstack server list
Enter fullscreen mode Exit fullscreen mode


( 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

Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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) and 10.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.79 or ssh 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

Enter fullscreen mode Exit fullscreen mode

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


Step 5.4: Flavor Tab


Step 5.5: Networks Tab

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)