OpenStack is an free to use and open source cloud computing infrastructure platform that unifies the administration of Compute, Network and Storage resources to build and manage private and public clouds. The OpenStack project has support through contributions and finances from large companies such as AT&T, Huawei, Red Hat, Microsoft, Cisco, Intel, VMware, Dell, among many other companies.
How To Run Debian 12 or Debian 11 on OpenStack
For you to run Debian 12 or Debian 11 on OpenStack, you must meet the following requirements:
- Have a working OpenStack Cloud Platform
- Access to OpenStack Platform from Horizon Web UI Dashboard or openstack command line tool
- Configured Compute Node, Network and Storage backend(Cinder or Ephemeral storage)
- Configured Glance service where we will store Debian 11 cloud template
- Uploaded SSH Key pair
- Security group has to be created before instance
- Created Compute flavors
Step 1 – Download Debian Cloud image
The simplest way to get a virtual machine image for OpenStack Platform is to download pre-created ones. The default Debian Cloud image contain the cloud-init package that enables SSH key pair and user data injection.
Let’s download the latest Debian 12(Bookworm) Cloud image or Debian 11 (Bullseye) Cloud image from the URL manually, or with wget/curl tools:
### Debian 12 ###
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
### Debian 11 ###
wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2
You can as well use Debian Genericcloud image:
### Debian 12 ###
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
### Debian 11 ###
wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2
Step 2: Upload OS image to Glance
Next we upload downloaded Debian 11 Cloud image to Glance. This is the command I’ll run to push the image to Glance storage backend
### Debian 12 ###
openstack image create \
--container-format bare \
--disk-format qcow2 \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi \
--property os_type=linux \
--property os_distro=debian \
--property os_admin_user=debian \
--public \
--file debian-12-generic-amd64.qcow2 \
debian-12
### Debian 11 ###
openstack image create \
--container-format bare \
--disk-format qcow2 \
--property hw_disk_bus=scsi \
--property hw_scsi_model=virtio-scsi \
--property os_type=linux \
--property os_distro=debian \
--property os_admin_user=debian \
--public \
--file debian-11-generic-amd64.qcow2 \
debian-11
Give it a few seconds for the image to be active and available on Glance service.
$ openstack image list
+--------------------------------------+-----------------+--------+
| ID | Name | Status |
+--------------------------------------+-----------------+--------+
| 3193094d-3e5b-4abe-a2fa-875c5ef615f7 | Arch-Linux | active |
| c7e795e9-c002-400c-90a1-bfcdc82d0bfc | Ubuntu-20.04 | active |
| 448ff933-c695-4eea-b312-c4aee1bb569f | debian-11 | active |
+--------------------------------------+-----------------+--------+
Step 3: Get Network, Flavor, Security group, and keypair
We should have the following details before creation of a Debian 11 VM instance on OpenStack
- Glance Image ID / name
- Neutron network ID / name
- Compute flavor ID / Name
- Security group ID / Name
- Keypair name
Use the commands provided in this section to get the required information from your OpenStack Cloud Platform. For any, not configured you’ll have to fix it before you can proceed with the guide.
List networks:
$ openstack network list
+--------------------------------------+---------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+---------+--------------------------------------+
| 34baac2e-2393-4607-b1c9-2d7044d40978 | private | 48789ed8-d7b7-4606-8ed8-0f1036312463 |
| 8fb37281-9c89-4110-ac84-44179011767d | public | 23357ddf-d536-49d4-81e6-f80f6c4d2434 |
+--------------------------------------+---------+--------------------------------------+
List compute flavors:
$ openstack flavor list
+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 0 | m1.tiny | 512 | 5 | 0 | 1 | True |
| 1 | m1.small | 1024 | 10 | 0 | 1 | True |
| 2 | m1.medium | 2048 | 20 | 0 | 2 | True |
| 3 | m1.large | 4096 | 30 | 0 | 2 | True |
| 4 | m1.xlarge | 8192 | 40 | 0 | 4 | True |
| 5 | m1.jumbo | 16384 | 50 | 0 | 6 | True |
| 7 | m1.16 | 16384 | 40 | 0 | 4 | True |
+----+-----------+-------+------+-----------+-------+-----------+
List configured Security groups:
$ openstack security group list
+--------------------------------------+------------+------------------------+----------------------------------+------+
| ID | Name | Description | Project | Tags |
+--------------------------------------+------------+------------------------+----------------------------------+------+
| 2cc466c8-56a9-4540-bacb-9fcba39f6079 | default | Default security group | d87ec405cf8d409cb351e8a5a966aa3d | [] |
| b9348b10-e183-41ad-b1a6-ab15c4a3cf99 | permit_all | Allow all ports | d87ec405cf8d409cb351e8a5a966aa3d | [] |
| ca6aee3a-53c6-4ce0-a2c4-d2d39532556a | default | Default security group | 3109267d83094ae1a9f2bf165b48bed0 | [] |
+--------------------------------------+------------+------------------------+----------------------------------+------+
List keypairs on OpenStack:
$ openstack keypair list
+---------+-------------------------------------------------+------+
| Name | Fingerprint | Type |
+---------+-------------------------------------------------+------+
| admin | 19:7b:5c:14:a2:21:7a:a3:dd:56:c6:e4:3a:22:e8:3f | ssh |
| jmutai | 19:7b:5c:14:a2:21:7a:a3:dd:56:c6:e4:3a:22:e8:3f | ssh |
+---------+-------------------------------------------------+------+
Step 4: Create Debian VM instance on OpenStack
I’ve gathered below facts that will be used to create an instance off Debian cloud image:
- Compute flavor – m1.medium
- Glance Image name – debian-11
- Network name – private
- Keypair name – admin
- Security group name – permit_all
- VM to be created name – debian-bullseye-01
The command to create the Virtual Machine with above variables will be:
openstack server create \
--flavor m1.medium \
--image "debian-11" \
--network private \
--key-name admin \
--security-group permit_all \
debian-bullseye-01
The scheduling and build process starts immediately and you should get an output similar to one shared below.
+-------------------------------------+--------------------------------------------------+
| Field | Value |
+-------------------------------------+--------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | None |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
| OS-EXT-SRV-ATTR:instance_name | |
| OS-EXT-STS:power_state | NOSTATE |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | None |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | |
| adminPass | 3K2g2mSbRN3U |
| config_drive | |
| created | 2021-08-15T21:14:36Z |
| flavor | m1.medium (2) |
| hostId | |
| id | 50a6d57f-c8ad-4299-b9dc-2bb697c03bdd |
| image | debian-11 (448ff933-c695-4eea-b312-c4aee1bb569f) |
| key_name | admin |
| name | debian-bullseye-01 |
| progress | 0 |
| project_id | d87ec405cf8d409cb351e8a5a966aa3d |
| properties | |
| security_groups | name='b9348b10-e183-41ad-b1a6-ab15c4a3cf99' |
| status | BUILD |
| updated | 2021-08-15T21:14:36Z |
| user_id | a4cf64e81be5456b81af0f05b33707eb |
| volumes_attached | |
+-------------------------------------+--------------------------------------------------+
After the VM is in Active state confirm with below commands:
$ openstack server list --column Name --column Status --column Networks
+--------------------+--------+--------------------------------------+
| Name | Status | Networks |
+--------------------+--------+--------------------------------------+
| debian-bullseye-01 | ACTIVE | private=172.10.10.149 |
+--------------------+--------+--------------------------------------+
Step 5: Connect to VM instance created
The default login username for OpenStack Debian cloud image is debian
Test ssh connection to the virtual machine:
$ ssh debian@172.10.10.149
Warning: Permanently added '172.10.10.149 ' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/kmutai/.ssh/id_rsa':
Linux debian-bullseye-01 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
debian@debian-bullseye-01:~$
Check OS release release details from /etc/os-release file.
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Update and Upgrade your Debian instance by running the commands:
sudo apt update
sudo apt upgrade -y
To this far you should have a running Instance of Debian 11 (Bullseye) on OpenStack. In case of technical issues/errors, feel free to contact us through the comments sections.
How To Run Debian 12 or Debian 11 on KVM
For KVM you should have below pre-reqs met:
- KVM hypervisor installed and configured
- Configured Linux / OVS Bridge
- Configured Libivirt Storage pool
- Virsh command line tool
Step 1: Confirm all pre-reqs are okay
Check libivrtd service status:
$ systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-09-27 00:41:00 EAT; 1 months 13 days ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 521154 (libvirtd)
Tasks: 26 (limit: 32768)
Memory: 138.2M
CGroup: /system.slice/libvirtd.service
....
List Linux / OVS bridges configured on the system if any:
$ brctl show
bridge name bridge id STP enabled interfaces
private01 8000.5254000b0e1d yes private01-nic
vnet0
vnet25
vnet32
vnet33
vnet35
vnet36
vnet37
vnet38
vnet39
vnet54
vnet57
vnet58
storage 8000.52540058dd87 yes storage-nic
vnet26
virbr0 8000.525400021ab5 yes virbr0-nic
virbr1 8000.525400c6803a yes virbr1-nic
List KVM Storage pools
$ sudo virsh pool-list
Name State Autostart
------------------------------
images active yes
Step 2: Download Debian 11 DVD / CD ISO image
Visit Debian DVD and CD Downloads image URL.
### Debian 12 ###
wget https://cdimage.debian.org/mirror/cdimage/archive/12.1.0/amd64/iso-dvd/debian-12.1.0-amd64-DVD-1.iso
sudo mv debian-12.1.0-amd64-DVD-1.iso /var/lib/libvirt/images
### Debian 11 ###
wget https://cdimage.debian.org/mirror/cdimage/archive/11.8.0/amd64/iso-dvd/debian-11.8.0-amd64-DVD-1.iso
sudo mv debian-11.8.0-amd64-DVD-1.iso /var/lib/libvirt/images
Create Debian 11(Bullseye) Virtual Machine on KVM
For Linux Bridge Networking:
sudo virt-install \
--name debian-bullseye \
--ram 2096 \
--disk path=/var/lib/libvirt/images/debian-bullseye.qcow2,size=40 \
--vcpus 2 \
--os-variant debian11 \
--network bridge=virbr0 \
--graphics none \
--console pty,target_type=serial \
--location /var/lib/libvirt/images/debian-11.8.0-amd64-DVD-1.iso \
--extra-args 'console=ttyS0,115200n8 serial'
For Open vSwitch Bridge Networking:
sudo virt-install \
--name debian-bullseye \
--ram 2096 \
--disk path=/var/lib/libvirt/images/debian-bullseye.qcow2,size=40 \
--vcpus 2 \
--os-variant debian11 \
--network=bridge:private01,model=virtio,virtualport_type=openvswitch \
--graphics none \
--console pty,target_type=serial \
--location /var/lib/libvirt/images/debian-11.8.0-amd64-DVD-1.iso \
--extra-args 'console=ttyS0,115200n8 serial'
A VM will be created with:
- Name – debian-bullseye
- Memory – 2GB
- VCPUs – 2
- Hard disk – 40GB
- Bridge name – virtbr0 for Linux bridge and private01 for OVS bridge
- DVD ISO file Path – /var/lib/libvirt/images/debian-11.1.0-amd64-DVD-1.iso
The installation process of Debian 11 on KVM should now begin.
Starting install...
Retrieving file vmlinuz... | 6.5 MB 00:00:00
Retrieving file initrd.gz... | 17 MB 00:00:00
Allocating 'debian-bullseye.qcow2' | 40 GB 00:00:00
Connected to domain debian-bullseye
Escape character is ^]
[ 0.000000] Linux version 5.10.0-9-amd64 ([email protected]) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.70-1 (2021-09-30)
[ 0.000000] Command line: console=ttyS0,115200n8 serial
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[ 0.000000] BIOS-provided physical RAM map:
....
Follow installation process to completion to have a running instance of Debian 11 on KVM.
Set Language to be used during installation process.

Set Continent and Country


Set Keymap to use