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 (5)

Collapse
 
jjoyneriv profile image
James Joyner

Yea that's how I started out too. After that it was DevStack. Then I found Kolla-Ansible OpenStack. We use both AIO and cluster at my company.

Nice page.
~J

Collapse
 
m3dh4t profile image
invincible under the sun

Thanks! I really appreciate your comment. I've only used OpenStack so far and haven't tried Kolla-Ansible yet. How has your experience been with it? Would you recommend it for someone looking to move beyond a basic OpenStack setup?

Collapse
 
jjoyneriv profile image
James Joyner

Absolutely! You have to try the Kolla-Ansible setup. It's based on Ansible and it configures all OpenStack services to be setup in Docker Containers. It's clean and easy to get started plus the offer a multinode and all-in-one setup. Here's the quick start guide docs.openstack.org/kolla-ansible/2... . I highly recommend it for both personal or enterprise level clusters.

Thread Thread
 
m3dh4t profile image
invincible under the sun

Thanks! I really appreciate the recommendation and the quick start guide. I'll check it out. One thing I'm curious about: after using Kolla-Ansible in production, what's one lesson you wish you had known before deploying your first cluster?

Collapse
 
citronbrick profile image
CitronBrick

notion.site

says

This page couldn’t be found
You may not have access, or it might have been deleted or moved. Check the link and try again.