<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: invincible under the sun</title>
    <description>The latest articles on DEV Community by invincible under the sun (@m3dh4t).</description>
    <link>https://dev.to/m3dh4t</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3658809%2Fb2a10773-aee0-4983-9e0b-40c1239b4c0c.png</url>
      <title>DEV Community: invincible under the sun</title>
      <link>https://dev.to/m3dh4t</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/m3dh4t"/>
    <language>en</language>
    <item>
      <title>openstack</title>
      <dc:creator>invincible under the sun</dc:creator>
      <pubDate>Fri, 12 Dec 2025 16:54:41 +0000</pubDate>
      <link>https://dev.to/m3dh4t/openstack-3dkj</link>
      <guid>https://dev.to/m3dh4t/openstack-3dkj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to Cloud Computing
&lt;/h2&gt;

&lt;p&gt;This is how I built a private cloud using OpenStack (MicroStack).&lt;br&gt;
For more detailed and informative content, you can visit this Notion page:&lt;br&gt;
&lt;a href="https://m3dh4t.notion.site/Introduction-to-Cloud-Computing-2bef4300eb358009a81de3a5327489f1?source=copy_link" rel="noopener noreferrer"&gt;https://m3dh4t.notion.site/Introduction-to-Cloud-Computing-2bef4300eb358009a81de3a5327489f1?source=copy_link&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Where OpenStack Fits In
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;OpenStack = Open-source software to build your own private cloud&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS/Azure/Google use proprietary (closed) software&lt;/li&gt;
&lt;li&gt;OpenStack is open-source - anyone can use it free&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MicroStack&lt;/strong&gt; = OpenStack packaged to run on one machine for learning&lt;br&gt;
&lt;strong&gt;Think of it as:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS is iPhone (closed ecosystem, easy to use)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenStack is Android (open, customizable, run anywhere)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're about to install your own mini private cloud!&lt;/p&gt;
&lt;h1&gt;
  
  
  MicroStack Learning Journey
&lt;/h1&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;1. System Requirements &amp;amp; Pre-Installation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hardware Check:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsxmcf5janu085834uz7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsxmcf5janu085834uz7.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vq13njq7w4uld7c91qj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vq13njq7w4uld7c91qj.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;verify that ur system support virtualization ( because this openstack will make vms )&lt;br&gt;
use this command&lt;br&gt;
&lt;code&gt;egrep -c '(vmx|svm)' /proc/cpuinfo&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u8ywr6zzrvt3iee8au0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u8ywr6zzrvt3iee8au0.png" alt=" " width="800" height="217"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Installation Process
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 2.1: Update System
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Installation Process
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 2.1: Update System
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14fbnpee2042a8ko2mvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14fbnpee2042a8ko2mvw.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2.3: Verify Installation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tcc8fqiwzps6e3ke7j7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tcc8fqiwzps6e3ke7j7.png" alt=" " width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2.4: Initialize MicroStack
&lt;/h3&gt;

&lt;p&gt;Here’s &lt;strong&gt;exactly what happens under the hood&lt;/strong&gt; when you run:&lt;br&gt;
&lt;code&gt;microstack init --auto --control&lt;/code&gt;&lt;br&gt;
This command &lt;strong&gt;initializes and configures MicroStack&lt;/strong&gt; (a single-node OpenStack distribution) to act as the &lt;strong&gt;control node&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below is the step-by-step process.&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;What Actually Happens During &lt;code&gt;microstack init --auto --control&lt;/code&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;MicroStack performs &lt;strong&gt;automated OpenStack deployment&lt;/strong&gt; using snaps. The process includes:&lt;br&gt;
Pre-checks &amp;amp; Environment Setup&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faog3jzpu6ilsupxdlzr8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faog3jzpu6ilsupxdlzr8.png" alt=" " width="800" height="106"&gt;&lt;/a&gt;&lt;br&gt;
MicroStack checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU support (VT-x/AMD-V)&lt;/li&gt;
&lt;li&gt;Memory and disk space&lt;/li&gt;
&lt;li&gt;Snap services status&lt;/li&gt;
&lt;li&gt;Network interfaces availability&lt;/li&gt;
&lt;li&gt;Whether this node should act as the controller
Database (MariaDB/Galera) Initialization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzu0kkw5jesj5jg2cezp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzu0kkw5jesj5jg2cezp.png" alt=" " width="800" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It sets up the main OpenStack database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates the &lt;strong&gt;MariaDB&lt;/strong&gt; instance inside the MicroStack snap&lt;/li&gt;
&lt;li&gt;Secures it with random passwords&lt;/li&gt;
&lt;li&gt;Prepares OpenStack schema for services (Nova, Keystone, Neutron, etc.)&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Message Queue Setup (RabbitMQ)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ng700fj5jwhmwpologd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ng700fj5jwhmwpologd.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;br&gt;
MicroStack deploys a RabbitMQ service internally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generates a RabbitMQ user&lt;/li&gt;
&lt;li&gt;Sets service permissions&lt;/li&gt;
&lt;li&gt;Ensures services can communicate through the message bus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is essential for Nova, Neutron, and other components.&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Identity Service Setup (Keystone)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ddkjtu9wjaz2jlw9m0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ddkjtu9wjaz2jlw9m0c.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;br&gt;
Keystone is the authentication system.&lt;/p&gt;

&lt;p&gt;The init process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates &lt;strong&gt;service users&lt;/strong&gt; (nova, neutron, glance…)&lt;/li&gt;
&lt;li&gt;Creates &lt;strong&gt;API endpoints&lt;/strong&gt; (public/admin/internal)&lt;/li&gt;
&lt;li&gt;Configures authentication tokens&lt;/li&gt;
&lt;li&gt;Creates the &lt;strong&gt;admin&lt;/strong&gt; project and admin user&lt;/li&gt;
&lt;li&gt;Writes clouds.yaml credentials&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Image Service (Glance) Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbkrzz9h8imzbiczcr2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbkrzz9h8imzbiczcr2t.png" alt=" " width="791" height="89"&gt;&lt;/a&gt;&lt;br&gt;
Glance is initialized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates Glance DB tables&lt;/li&gt;
&lt;li&gt;Prepares local image storage&lt;/li&gt;
&lt;li&gt;Enables the Glance API service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Later you can upload images like &lt;code&gt;cirrosudo snap services microstack&lt;br&gt;
s&lt;/code&gt; or &lt;code&gt;ubuntu&lt;/code&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Compute Service (Nova) Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshrxr3sb84h4hussjvrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshrxr3sb84h4hussjvrr.png" alt=" " width="791" height="89"&gt;&lt;/a&gt;&lt;br&gt;
Nova processes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Scheduler&lt;/li&gt;
&lt;li&gt;Conductor&lt;/li&gt;
&lt;li&gt;Compute service (libvirt/KVM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The init:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates Nova databases&lt;/li&gt;
&lt;li&gt;Registers compute node&lt;/li&gt;
&lt;li&gt;Configures libvirt&lt;/li&gt;
&lt;li&gt;Ensures hypervisor is working (KVM/QEMU)&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Neutron Networking Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yhcqbuw5i2xk9vrtk5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yhcqbuw5i2xk9vrtk5w.png" alt=" " width="791" height="89"&gt;&lt;/a&gt;&lt;br&gt;
Networking is &lt;strong&gt;the biggest step&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Init configures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open vSwitch&lt;/li&gt;
&lt;li&gt;Router and DHCP agents&lt;/li&gt;
&lt;li&gt;Metadata service&lt;/li&gt;
&lt;li&gt;Bridge interfaces&lt;/li&gt;
&lt;li&gt;NAT on the host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Default networks created&lt;/strong&gt; (when using &lt;code&gt;--auto&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;External network (10.20.20.0/24)&lt;/li&gt;
&lt;li&gt;Internal network&lt;/li&gt;
&lt;li&gt;A router connecting them&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Horizon Dashboard Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The web UI is prepared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Django configuration&lt;/li&gt;
&lt;li&gt;Static files build&lt;/li&gt;
&lt;li&gt;Apache2 service start&lt;/li&gt;
&lt;li&gt;Generates admin password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Horizon (Dashboard) Setup for MicroStack&lt;/strong&gt;&lt;br&gt;
install :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;sudo&lt;/span&gt; &lt;span class="nx"&gt;apt&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="nx"&gt;openstack&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;dashboard&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;• Configure &lt;code&gt;/etc/openstack-dashboard/local_settings.py&lt;/code&gt; →&lt;/p&gt;

&lt;p&gt;OPENSTACK_HOST = "10.20.20.1" (  this is the microstack ip)&lt;br&gt;
• Restart Apache:&lt;br&gt;
sudo systemctl restart apache2&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon72wygjuq873360954e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon72wygjuq873360954e.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;br&gt;
else the process is opened in nginx and in port https/443&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdieg9z9iwhbb7tn8e6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmdieg9z9iwhbb7tn8e6m.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Systemd Services Start&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;All OpenStack services are launched:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nova-*&lt;/li&gt;
&lt;li&gt;neutron-*&lt;/li&gt;
&lt;li&gt;glance-*&lt;/li&gt;
&lt;li&gt;keystone&lt;/li&gt;
&lt;li&gt;horizon&lt;/li&gt;
&lt;li&gt;ovs-switch&lt;/li&gt;
&lt;li&gt;rabbitmq&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;3. First Login &amp;amp; Dashboard Overview&lt;br&gt;
Step 3.1: Get Credentials&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;snap get microstack config.credentials.keystone-pasword&lt;/code&gt;&lt;br&gt;
 Step 3.3: Access Dashboard&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsw906ub4550fkp2nttgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsw906ub4550fkp2nttgo.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3.4: Explore Dashboard Sections&lt;br&gt;
Instances : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3ptig8pje5hmlq15pfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3ptig8pje5hmlq15pfs.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;br&gt;
Images:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsu8ek9z80dul9wn3u6x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsu8ek9z80dul9wn3u6x3.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Network Topolgy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkrbscyag4lbo3u6fn9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkrbscyag4lbo3u6fn9g.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Creating Your First VM (CLI Method)
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 4.1: List Available Images
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10fm4pequdniagtdwnty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10fm4pequdniagtdwnty.png" alt=" " width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4.2: Launch First VM
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;microstack launch cirros --name mohamedlakhar_vm

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmkn7c6a84nkubcqi2tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmkn7c6a84nkubcqi2tw.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4.3: Verify VM is Running
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;microstack.openstack server list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ihdf8po53832mnzedw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ihdf8po53832mnzedw4.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;br&gt;
( we can delete the vm called my-first-vm because of the error)&lt;/p&gt;

&lt;p&gt;using the command :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;microstack.openstack server delete (name of the vm) my-first-vm

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;VM Details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;mohamedlakhdar_vm&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Status: ACTIVE&lt;/li&gt;
&lt;li&gt;IP Address: &lt;code&gt;[10.20.20.174]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Networks:192.168.222.79, 10.20.20.174&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4.4: Get VM Details
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;microstack.openstack server show mohamedlakhdar_vm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3thx4r1pxurtsoof2w5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3thx4r1pxurtsoof2w5h.png" alt=" " width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Information Found:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Status &amp;amp; Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Status:&lt;/strong&gt; &lt;code&gt;ACTIVE&lt;/code&gt; ✅ (VM is running successfully!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power State:&lt;/strong&gt; &lt;code&gt;Running&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VM State:&lt;/strong&gt; &lt;code&gt;active&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task State:&lt;/strong&gt; &lt;code&gt;None&lt;/code&gt; (no operations in progress)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Network Details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP Address:&lt;/strong&gt; &lt;code&gt;192.168.222.79&lt;/code&gt; (external) and &lt;code&gt;10.20.20.174&lt;/code&gt; (internal)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networks:&lt;/strong&gt; &lt;code&gt;test=192.168.222.79, 10.20.20.174&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hostname:&lt;/strong&gt; &lt;code&gt;cloud&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hardware Specifications:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flavor:&lt;/strong&gt; &lt;code&gt;m1.tiny&lt;/code&gt; (1 VCPU, small VM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk Config:&lt;/strong&gt; &lt;code&gt;MANUAL&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Image Used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Image:&lt;/strong&gt; &lt;code&gt;cirros&lt;/code&gt; (37fde813-a9c0-474a-951c-d58a4d758b97)&lt;/li&gt;
&lt;li&gt;This is the lightweight Linux test image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Timestamps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Created:&lt;/strong&gt; &lt;code&gt;2025-12-04T15:27:02Z&lt;/code&gt; (December 4, 2025 at 15:27)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launched at:&lt;/strong&gt; &lt;code&gt;2025-12-04T15:27:35.000000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updated:&lt;/strong&gt; &lt;code&gt;2025-12-04T15:27:36Z&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boot time:&lt;/strong&gt; ~34 seconds (from creation to running)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security &amp;amp; Access:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security Groups:&lt;/strong&gt; &lt;code&gt;name='default'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Name:&lt;/strong&gt; &lt;code&gt;microstack&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config Drive:&lt;/strong&gt; Enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Unique Identifiers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instance ID:&lt;/strong&gt; &lt;code&gt;567a21b8-a6bc-4c40-a8e5-c73aa2a55927&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host ID:&lt;/strong&gt; &lt;code&gt;dd69076b32617bc60e7995810742...&lt;/code&gt; (long hash)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project ID:&lt;/strong&gt; &lt;code&gt;764273cf46ff40d486c2786ddbf43624&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What This Tells Me:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;VM is fully operational&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status is ACTIVE&lt;/li&gt;
&lt;li&gt;Has both internal and external IP addresses&lt;/li&gt;
&lt;li&gt;Running for less than a minute&lt;/li&gt;
&lt;li&gt;No errors or issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Network is configured correctly&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM has connectivity to the "test" network&lt;/li&gt;
&lt;li&gt;Has two IPs (internal subnet + external access)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ready for SSH access&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can now connect via: &lt;code&gt;ssh cirros@192.168.222.79&lt;/code&gt; or &lt;code&gt;ssh cirros@10.20.20.174&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Default password: &lt;code&gt;gocubsgo&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My Observations:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;"First VM created successfully via CLI!"&lt;/li&gt;
&lt;li&gt;"Boot time was very fast (~34 seconds)"&lt;/li&gt;
&lt;li&gt;"VM has proper network connectivity with two IPs"&lt;/li&gt;
&lt;li&gt;"Instance name includes my username 'mohamedlakhdar' - personalized!"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4.6: SSH into VM
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh cirros@10.20.20.174
# Password: gocubsgo

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falnhyrmw2q9s1ssljfe5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falnhyrmw2q9s1ssljfe5.png" alt=" " width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbedikuvc47vnw271z9vv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbedikuvc47vnw271z9vv.png" alt=" " width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Creating Your Second VM (GUI Method)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 5.1: Navigate to Launch Instance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frygq71f5ej47j4dusjc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frygq71f5ej47j4dusjc5.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Path:&lt;/strong&gt; Dashboard → Compute → Instances → Launch Instance&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.2: Instance Details Tab
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fislny2e84ldsy0szjty1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fislny2e84ldsy0szjty1.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.3: Source Tab
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Boot Source: Image&lt;/li&gt;
&lt;li&gt;Create New Volume: No&lt;/li&gt;
&lt;li&gt;Image: cirros&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fquht6k6rkl5nyh10tqox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fquht6k6rkl5nyh10tqox.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
Step 5.4: Flavor Tab&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiencqwaogbcha3swb1u9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiencqwaogbcha3swb1u9.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 5.5: Networks Tab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;test for example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b9hcx0j412d7rr9osqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b9hcx0j412d7rr9osqn.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
we can leave everything in default ( network ports ( will be ssh ) … ) and launch instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5.6: Launch &amp;amp; Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfny7i4fr17w7qqsudn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfny7i4fr17w7qqsudn3.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;6. Networking &amp;amp; VM Communication&lt;br&gt;
Step 6.1: View Network Topology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;graph :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjsmrjly742ywznee1dj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgjsmrjly742ywznee1dj.png" alt=" " width="800" height="443"&gt;&lt;/a&gt;&lt;br&gt;
topology of the 2 machine in the same network :&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvszz4bk8n4o9qdtg3zuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvszz4bk8n4o9qdtg3zuj.png" alt=" " width="800" height="443"&gt;&lt;/a&gt;&lt;br&gt;
Step 6.2: Test VM-to-VM Communication&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9sbvpjta4vd3np7nsqp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9sbvpjta4vd3np7nsqp.png" alt=" " width="800" height="302"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;What this proves:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[x]  Virtual network is working&lt;/li&gt;
&lt;li&gt;[x]  VMs can communicate&lt;/li&gt;
&lt;li&gt;[x]  Network isolation is functional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6.3: Check Network Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzd3o0asvb9zl090yape.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzd3o0asvb9zl090yape.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>openstack</category>
      <category>microstack</category>
    </item>
  </channel>
</rss>
