Multipass: Saniyeler içerisinde Ubuntu VM nasıl kurulur?
Multipass, Canonical tarafından geliştirilen, yönetimini CLI’dan yapabileceğimiz açık kaynak kodlu bir sanallaştırma aracıdır. Linux, Windows, macOS üzerinde çalışabilen Multipass ile Ubuntu temelindeki OS’leri, Docker ve Appliance gibi ortamları çok kısa süre içerisinde ayağa kaldırabilir, gerek izole bir katmanda gerekse de mevcut ağımız üzerinde çalışmalar yapabiliriz. Yazılım Geliştiriciler, kod denemeleri ve test otomasyonlarında, Sistem Yöneticileri, genel Linux yapılandırmalarında, Ansible, Docker testlerinde, Eğitimciler – Öğrenciler, Linux Sunucu – Uygulama ortamlarını hızlı bir şekilde hazırlamak için Multipass’ın yeteneklerinden faydalanabilirler. Kısa bir teorik girişten sonra Multipass ile yapabileceklerimizi deneyimlemeye başlayabiliriz.
Kurulum Adımları
Makalemize konu olan Multipass, fiziksel bir host üzerinde koşan Ubuntu Server 24.04.3 LTS’ye kurulacaktır.

“ sudo snap install multipass “ komutu ile kuruluma başlıyoruz.

Download işlemi başlıyor.

Kurulum tamamlanmıştır. Aşağıda da görebileceğiniz üzere versiyon, 1.16.1’dir.

“ multipass version “ komutu ile versiyon kontrolü yapabiliriz.

Servisin durumunu da “ systemctl status snap.multipass.multipassd.service “ komutu ile kontrol edebiliriz.

Multipass, bu aşamada kullanıma hazır durumdadır. VM’ler oluşturabilir ve istediğimiz servisleri çalıştırabiliriz. Bu işlemden önce Multipass’ın mevcut ağ ayarlarında bir düzenleme yapacağız ve oluşturacağımız VM’lere fiziksel ağ üzerinden de erişim sağlayabileceğiz.
Network Ayarları – Bridge Konfigürasyonu
Multipass, varsayılan olarak oluşturulan VM’ler için NAT üzerinden erişim vermektedir. Bu durumda VM’ler sadece Multipass Host üzerinden erişilebilir olmaktadır.
“ multipass networks “ komutu ile mevcut durumu kontrol ediyoruz.

Multipass’ın koştuğu sdlab-clt06 isimli Host, enp0s31f6 üzerinden LAN ve WAN erişimi sağlamaktadır. Konfigürasyon ayarlarının tutulduğu dosya aşağıdaki gibidir.

Bu aşamada Multipass üzerinden oluşturacağımız VM’lerin fiziksel ağ üzerinden de erişilebilir olması için Bridge konfigürasyonu yapacağız.
İşlem adımları ve komutlar aşağıdaki gibidir.
“ sudo snap connect multipass:network-manager “
“ sudo snap connect multipass:network-control “
“ sudo snap connect multipass:firewall-control “

Komutlarımızı çalıştırdıktan sonra /etc/netplan dizini altında bulunan dosyamızı açıyoruz ve gerekli düzenlemeleri yapıyoruz.

Dosya, varsayılan olarak aşağıdaki gibidir.

Bridge konfigürasyonunu yapıyoruz.

Düzenlemeler sonrasında değişiklikleri kaydediyoruz ve “ sudo netplan apply “ komutunu çalıştırıyoruz. Bu komutu çalıştırdıktan sonra yeni konfigürasyon aktif olacak ve host’a erişim ( SSH vb. ) kesilecektir.

Tanımladığımız 192.168.2.7 IP Adresi üzerinden erişim sağlamayı deniyoruz.

Bu bölümü sonlandırmadan önce yaptığımız düzenlemelerin Multipass’a olan etkilerini kontrol ediyoruz.
“ multipass networks “ komutu çalıştırıldığında, br0 isimli Bridge görülmektedir. Oluşturacağımız VM’ler, bu bağlantı ile fiziksel ağ üzerinden de erişilebilir olacaklardır.

Komut Setleri ve Örnek Kullanımlar
Yukarıdaki 2 başlıkta, Multipass’ın kurulum ve konfigürasyon adımlarına değinmiştik. Bu başlığımız altında da Multipass’in komutlarından bahsedeceğiz ve örnekler üzerinde pratik yapacağız. Multipass, Tip 2 Sanallaştırma gibi çalıştığı için fiziksel bir host üzerinde konumlandırılması, daha stabil bir ortam sunacaktır. Bizim senaryomuzda Multipass, i7 CPU, 32 GB RAM, 500 GB SSD’ye sahip bir cihazda koşmaktadır.
Multipass Host’a SSH üzerinden erişiyoruz. Burada root yetkilerine sahip bir hesap kullanılması uygun olacaktır.

Uygulamaya dair tüm komutlar, “ multipass “ ile başlamaktadır.

“ multipass “ yazıp, Enter’a bastığımızda, aşağıdaki komutlar açıklamalarıyla beraber listelenmektedir. Tüm işlemlerimizi bu komutlar vasıtasıyla gerçekleştireceğiz.

Örneğin;
“ multipass version “ ile uygulamanın versiyonunu kontrol edilir.

“ multipass list “ ile oluşturduğumuz VM’ler listelenir. ( Bu aşamada herhangi bir VM oluşturmadığımız için “ No instances found “ mesajı alınmaktadır. )

“ multipass networks “ ile ağ bileşenlerine dair detaylar listelenir.

“ multipass find “ ile kullanabileceğimiz imajlar listelenir.

Bu kısa bilgilendirmeden sonra Multipass ile VM oluşturma işlemine geçiyoruz. Böylece diğer komutları da kullanmış ve detayları ile ele almış olacağız.
“ multipass launch jammy –name SDLAB-VM01 “ komutu ile ilk VM’i oluşturuyoruz.
launch, VM oluşturmak için kullandığımız komuttur. jammy ile hangi sürümü kullanmak istediğimizi belirtiyoruz. –name ile de VM için hostname belirtiyoruz.

Creating, Starting aşamaları birbirini takip ediyor ve VM oluşturuluyor.
Not : Multipass, kurulumu yapılabilecek OS’lere ait imajları ihtiyaç durumunda indirmektedir. Daha önce indirilmemiş bir imaj tercih edilir ise VM oluşturma aşamasında indirilir. Aynı imaj’dan oluşturulacak diğer VM’lerde direkt oluşturma işlemi başlar, tekrar indirme işlemi yapılmaz. Konumlandırılan imaj silinirse tekrar indirme işlemi yapılır. Bu konuya ilerleyen aşamalarda değineceğiz.

Yapılandırma aşamasında bekliyoruz.

VM hazır olduğunda aşağıdaki mesaj alınmaktadır.

VM hazır olduğuna göre “ multipass list “ komutu ile kontrol edebiliriz.

Görüldüğü üzere SDLAB-VM01 isimli VM, aktif durumdadır. OS, Ubuntu 22.04 LTS ( jammy ) ve ağ erişimi NAT olarak konfigüre edilmiştir.
Şimdi de VM’e bağlanalım ve benzer detayları kontrol edelim. Komutumuz, “ multipass shell SDLAB-VM01“

Gelen ekranda, VM’in IP Adresi, OS detayları görülmektedir.

Ping testi yapıyoruz ve VM’in WAN yönüne olan erişimini kontrol ediyoruz.

Multipass, VM oluştururken aksi belirtilmedikçe her VM için 1 CPU, 1 GB RAM, 5 GB HDD ve 1 NIC ( NAT ) atamaktadır. Oluşturduğumuz VM’de bu detayları kontrol edeceğiz.
“ multipass info SDLAB-VM01 “ komutunu çalıştırıyoruz.
info, konfigürasyon detaylarını listelemek için kullandığımız komut, SDLAB-VM01’de VM’in adıdır. VM’e ait Hostname, IP Adresi, OS, CPU, RAM, Disk vb. temel detaylar görülmektedir.

Şimdi de standartların dışına çıkıyoruz ve belirttiğimiz özelliklerde bir VM oluşturuyoruz.
“ multipass launch jammy –name SDLAB-VM02 –memory 2G –cpus 1 –disk 10G –network br0 “




VM oluşturuldu. “ multipass list “ komutu ile VM’leri listeliyor ve kontrol ediyoruz.

Yukarıda görüldüğü üzere SDLAB-VM02 isimli VM hazır durumdadır. SDLAB-VM01’den farklı olarak 2 adet IP Adresi bulunmaktadır. Bu durum, VM oluşturma aşamasında “ –network br0 “ parametresinin kullanılmasından kaynaklanmaktadır. İlk bölümde de değindiğimiz üzere Multipass, VM’lere varsayılan olarak NAT destekli NIC tahsis etmektedir. Ancak bizim senaryomuzda olduğu gibi Bridge konfigürasyonu yapılmış ise “ –network “ parametresi ile Bridge destekli NIC tahsis edilebilir.
Yukarıdaki detayları doğrulamak adına SDLAB-VM02’ye 192.168.2.0 ortamından ping testi yapıyoruz. Kaynak IP Adresimiz, 192.168.2.3’tür. Hedef IP Adresimiz, 192.168.2.233’tür. Görüldüğü üzere fiziksel ağ üzerinde bulunan bir cihazdan, Multipass tarafından oluşturulan bir VM’e erişim sağlayabiliyoruz.

SDLAB-VM02’ye Multipass üzerinden erişiyoruz ve VM’e dair detayları kontrol ediyoruz.

İmaj Yönetimi
VM oluşturma detaylarından bahsederken, Multipass’ın imaj indirme, konumlandırma ve dağıtma süreçlerine değinmemiz uygun olacaktır. Multipass, resmi olarak Canonical tarafından desteklendiği için Ubuntu temelindeki imajları VM’lere dağıtmaktadır. Çalışma prensibine göre imajlar, varsayılan olarak hazır gelmez, VM oluşturma sırasındaki tercihe göre jammy, noble vb. olarak indirilir ve depolanır. Örneğin; senaryolarımızda Ubuntu 22.04 LTS ( jammy ) kullanıldığı için aynı kapsamda oluşturulacak yeni VM’ler için tekrar imaj indirme işlemi yapılmamaktadır. Ancak Ubuntu 24.04 LTS ( noble ) kurulacak ise bir defaya mahsus indirilmesi ve depolanması gerekecektir. Bu durum, direkt olarak VM oluşturma süremize etki etmekte, imajı mevcut olan VM’ler çok kısa sürede ayağa kalkmaktadır. Bu konudaki teorik bilgilerden sonra pratik tarafa yönelelim ve sürecin işleyişini görelim.
“ multipass find “ komutu ile kullanabileceğimiz imajları listeliyoruz. SDLAB-VM01 ve SDLAB-VM02’de kullandığımız OS’ler Ubuntu 22.04 LTS ( jammy ). Komut çıktısındaki işaretli alana karşılık gelen Aliases, Version ve Description sütunları biraz sonra yapacağımız kontrolde bize yol gösterecektir.

Multipass, indirdiğimiz imaj dosyalarını aşağıdaki dizinde depolamaktadır.

“ ls “ komutu ile dizin içeriğini kontrol ediyor ve Ubuntu 22.04 LTS’nin konumlandırıldığı alanı görüyoruz.

Şimdi farklı bir OS’a sahip bir VM oluşturacağız ve aşamaları gözlemleyeceğiz.

Imaj indirme işlemi başlamıştır. FW üzerinden Multipass Host’un trafiğini kontrol ettiğimizde cloud-images.ubuntu.com tarafındaki veri akışı görülmektedir.


Imaj indirildi ve doğrulama işlemi yapılmaktadır.

noble-20251123 isimli dizinin oluştuğu, içeriğinde de Ubuntu 24.04 LTS’ye ait imaj dosyasının bulunduğu görülmektedir.


SDLAB-VM03 oluştu. “ multipass list “ komutu ile mevcut durumu kontrol ediyoruz.Görüldüğü üzere VM ayağa kalkmış durumda ve OS, Ubuntu 24.04 LTS’dir.


Bu konuyu kapatırken, depolanan imaj dosyalarının silinmesine de değineceğiz. Depolama işleminin yapıldığı dizinde, aşağıdaki komutun çalıştırılması yeterli olacaktır.
“ rm -rf * “

VM Yönetimi
Şimdi de mevcut VM’lerin yönetimine dair işlemler gerçekleştireceğiz. Hali hazırda 4 adet VM çalışmaktadır.

Herhangi bir nedenle bir veya birden fazla VM’in kapatılması gerekebilir. Bu işlemi, tek tek VM’lere ulaşıp, yapmaktansa “ multipass stop “ komutu ile daha pratik bir şekilde gerçekleştirebiliriz.
“ multipass stop SDLAB-VM01 “


Peki VM sayımız birden fazla ve tek bir komut ile tüm VM’leri kapatmamız gerekir ise ne yapmalıyız? Cevabımız aşağıdaki komut.
“ multipass stop –all “

Tüm VM’ler, tek bir komut vasıtasıyla kapatılmıştır.

Şimdi de VM’leri ayağa kaldıracağız. İsmi belirtilen VM’i açmak için aşağıdaki komutu kullanıyoruz.
“ multipass start SDLAB-VM01 “


Tüm VM’leri tek bir dokunuş ile ayağa kaldırmak için aşağıdaki komutu kullanıyoruz.
“ multipass start –all “


Herhangi bir nedenle VM silmek istediğimizde ise “ multipass delete SDLAB-VM01 “ komutunu çalıştırıyoruz. ( Bu işlem öncesinde VM kapatılmalıdır. )
Not : “ multipass delete “ komutu ile VM, tam olarak silinmez.

Söz konusu VM’i geri yüklemek için kullanacağımız komut ise aşağıdaki gibidir.
“ multipass recover SDLAB-VM01 “
VM, geri yüklenmiş olup, durumu “ Stopped “ olarak görülmektedir.

Multipass, oluşturulan VM’leri aşağıdaki dizinde konumlandırır.

Şimdi senaryomuzu tekrar ediyoruz ve VM’i ortamdan kaldırıyoruz.
“ multipass delete SDLAB-VM01 “
“ multipass purge “ ( Bu komut, VM’i ortamdan tamamen siler. )

SDLAB-VM01 tamamen silinmiştir.

Multipass ile çok kısa sürede VM oluşturmak mümkün olsa da yaptığımız bir değişiklik, konfigürasyon vb. işlemlerin kaybedilmemesi veya bir komut ile geri getirilebilmesi için Snapshot özelliğinden faydalanabiliriz.
Örneğin;
Temiz kurulum yaptığımız SDLAB-VM01’de beklemede olan güncellemeleri uygulayacağız. Bu işlem öncesinde bir snapshot alıyoruz ve güncellemeleri yapıyoruz.
Not: Snapshot işlemi öncesinde VM kapatılmalıdır.
“ multipass snapshot –name TemizKurulum –comment 04122025-2130 SDLAB-VM01 “

Snapshot’ın alındığına dair mesaj aşağıdaki gibidir.

“ multipass info SDLAB-VM01 “ ile VM özelinde kontrol yapabiliriz.

“ multipass list –snapshot “ ile genel durumu kontrol edebiliriz.

VM’e ait dizini kontrol ettiğimizde, snapshot işlemine dair dosyaları görebiliyoruz.

VM’de güncelleme işlemine başlıyoruz. 2 güncellemenin uygulanabileceği görülmektedir.


Güncellemeler yüklendi.

Şimdi de mevcut snapshot üzerinden geri yükleme yapacağız. ( Bu işlem öncesinde VM kapatılmalıdır. )
“ multipass restore SDLAB-VM01.TemizKurulum “ komutunu çalıştırıyor ve gelen soruya “ Y “ ile yanıt veriyoruz. Görüldüğü üzere otomatik olarak VM’in mevcut haline dair snapshot alındı ve sonrasında restore işlemi tamamlandı.

Restore işlemi sonrasında VM ayağa kalkmıştır. Görüldüğü üzere VM, temiz kurulum noktasına gelmiş ve 2 adet yüklenmeye hazır güncelleme bulunmaktadır.

Bu bölümü sonlandırmadan önce aldığımız snapshotların silinmesi üzerine de bazı detaylar paylaşmamız uygun olacaktır.
“ multipass list –snapshots “ ile genel durumu listeliyoruz.

Silmek istediğimiz VM’e ait snapshot adını belirtiyor ve işlemi gerçekleştiriyoruz. ( Bu işlem öncesinde VM kapatılmalıdır. )
“ multipass delete SDLAB-VM01.TemizKurulum “

İşlem tamamlandıktan sonra mevcut durumu kontrol ediyoruz. TemizKurulum isimli snapshot’ın silindiği görülmektedir.

Silinen dosyaları disk üzerinden tamamen kaldırmak ve yer açmak için “ multipass purge “ komutunun kullanılması uygun olacaktır.
Cloud-init Kullanımı
Multipass, farklı uygulamalardan da bildiğimiz Cloud-init özelliğine sahiptir. Cloud-init, bir VM’in ilk açılışı sırasında belirtilen işlemlerin ( konfigürasyon, uygulama yükleme vb. ) otomatik olarak yapılmasını sağlar. Bu özellik ile manuel yapılandırmaların önüne geçerek hem vakit kazanırız hem de olası hataları minimum seviyeye indirebiliriz.
VM’in referans alacağı .yaml uzantılı dosyayı hazırlıyoruz. Dosya içeriğimiz aşağıdaki gibidir. Amacımız, VM’in ilk açılış sırasında “ nginx “ ve “ mc “ uygulamalarını yüklemesidir.

Multipass tarafından sorunsuz bir şekilde erişilebilmesi için aşağıdaki dizine kaydediyoruz.

Script hazır, Multipass ile yeni bir VM oluşturmak için komutumuzu hazırlıyoruz.
“ multipass launch noble –name SDLAB-VM13 –cloud-init /home/kullaniciadi/snap/multipass/WebServer.yaml –network br0 “

SDLAB-VM13, aktif durumdadır. Hedef IP Adresimiz ise 192.168.2.240 olarak görülmektedir. Bu durumda hem nginx hem de mc’ye dair kontrollerimizi yapabiliriz.

192.168.2.240 adresini çağırdığımızda nginx’in aktif olduğunu görüyoruz.

Direkt SDLAB-VM13 üzerinden de servis kontrolünü yapabiliriz.

Son olarak mc uygulamasını da kontrol ediyoruz.

Multipass’ın Cloud-init özelliği ile yeni oluşturduğumuz bir VM’e nginx ve mc kurulumlarının otomatik olarak yapılmasını sağladık. İhtiyacımıza göre script üzerinde geliştirmeler yaparak farklı uygulamalar yükleyebilir, konfigürasyonlar yapabiliriz.
Faydalı olması dileklerimle.
Kaynak:
https://canonical.com/multipass










Eline sağlık.