Multipass Nedir? Nasıl Kullanılır?
8 min read

Multipass Nedir? Nasıl Kullanılır?

Multipass, bulut tarzı Ubuntu VM'leri oluşturmak için kullanılan bir provision aracıdır.
Multipass Nedir? Nasıl Kullanılır?

Multipass; Linux, macOS ve Windows üzerinde hızlı bir şekilde bulut tarzı Ubuntu VM'leri oluşturmak için bir araçtır. Canonical tarafından geliştirilmiştir.

Multipass ile komut satırı üzerinden çok basit bir şekilde sanal makineler oluşturabilir ve yönetebilirsiniz. Development ve test ortamlarınız için istediğiniz bir Ubuntu sürümünü, ihtiyacınıza göre yapılandırarak kullanabilirsiniz.

1. Multipass Nasıl Kurulur?

Multipass, Linux, macOS ve Windows üzerinde kurulabilir. Her bir işletim sistemi için kurulum oldukça basittir. Kurulum yapmak istediğiniz ortamın bağlantısına tıklayarak kurulumu hızlıca tamamlayabilirsiniz:

Kurulumu tamamladıktan sonra terminalinizde multipass version komutu ile kurulumu doğrulayabilirsiniz:

$ multipass version
multipass   1.12.2+win
multipassd  1.12.2+win

2. Multipass Ubuntu Versiyonlarını Listeleme

Multipass ile bir sanal makine kurmadan önce, o sanal makinenin hangi işletim sistemini kullanacağını özelleştirebilirsiniz. Tüm kullanılabilir işletim sistemlerini listelemek için multipass find komutunu kullanabilirsiniz.

$ multipass find
Image                       Aliases           Version          Description
core                        core16            20200818         Ubuntu Core 16
core18                                        20211124         Ubuntu Core 18
core20                                        20230119         Ubuntu Core 20
core22                                        20230119         Ubuntu Core 22
20.04                       focal             20230811         Ubuntu 20.04 LTS
22.04                       jammy,lts         20230815         Ubuntu 22.04 LTS
23.04                       lunar             20230810         Ubuntu 23.04
appliance:adguard-home                        20200812         Ubuntu AdGuard Home Appliance
appliance:mosquitto                           20200812         Ubuntu Mosquitto Appliance
appliance:nextcloud                           20200812         Ubuntu Nextcloud Appliance
appliance:openhab                             20200812         Ubuntu openHAB Home Appliance
appliance:plexmediaserver                     20200812         Ubuntu Plex Media Server Appliance

Blueprint                   Aliases           Version          Description
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
charm-dev                                     latest           A development and testing environment for charmers
docker                                        0.4              A Docker environment with Portainer and related tools
jellyfin                                      latest           Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
minikube                                      latest           minikube is local Kubernetes
ros-noetic                                    0.1              A development and testing environment for ROS Noetic.
ros2-humble                                   0.1              A development and testing environment for ROS 2 Humble.

Örnek olarak Ubuntu 22.04 LTS kurulumu yapmak istiyorsak kullanmamız gereken isim jammy veya lts olmalıdır.

3. Multipass Ubuntu Sanal Makine Oluşturmak

Kullanmak istediğiniz Ubuntu versiyonunu belirledikten sonra artık multipass launch komutuyla sanal makineyi tek bir komutta oluşturabilirsiniz.

Örneğin bir Ubuntu 22.04 LTS işletim sistemli sanal makine oluşturma için şu komutu kullanabilirsiniz:

multipass launch jammy

Çok kısa bir süre içinde Ubuntu 22.04 LTS işletim sistemli sanal makineniz rastgele bir isimle oluşturulmuş ve kullanıma hazır hale gelmiş olacaktır.

💡
Eğer multipass launch komutunda işletim sistemi belirtmezseniz varsayılan olarak lts alias'ına sahip işletim sistemi kurulur.

Rastgele bir isim yerine sanal makinelerin ismini manual belirlemek için --name parametresini kullanabilirsiniz.

multipass launch lts --name vm-name

Eğer bir sanal makinenin adını primary olarak belirlerseniz, o sanal makine primary niteliği kazanır. Primary sanal makine hakkında detaylı bilgiyi şu linkten öğrenebilirsiniz:

How to use the primary instance | Multipass documentation
Multipass is a CLI to launch and manage VMs on Windows, Mac and Linux that simulates a cloud environment with support for cloud-init. Get Ubuntu on-demand with clean integration to your IDE and version control on your native platform.

Oluşturulan makineleri listelemek için multipass list komutunu kullanabilirsiniz.

$ multipass list
Name                    State             IPv4             Image
courageous-spitz        Running           172.19.98.246    Ubuntu 22.04 LTS
master                  Running           172.19.108.212   Ubuntu 22.04 LTS

4. Multipass Özel CPU, RAM ve Disk Boyutlu Sanal Makine Oluşturmak

Multipass, eğer siz belirtmezseniz, otomatik olarak 1CPU, 1GB RAM ve 5GB disk alanına sahip sanal makineler oluşturur. Fakat ihtiyaçlarınız doğrultusunda bu değerleri ana makinenizin limitleri dahilinde belirleyebilirsiniz.

Sanal makine oluştururken özel değerler belirlemek için --cpus, --disk ve --memory parametrelerini kullanabilirsiniz.

$ multipass launch --cpus 4 --disk 20G --memory 8G
Launched: giving-catfish

Eğer daha önce oluşturulan bir sanal makinenin değerlerini güncellemek istiyorsanız, öncelikle makineyi multipass stop komutu ile durdurmalı ve ardından multipass set komutu ile yeni değerleri geçmelisiniz.

multipass stop giving-catfish
multipass set local.giving-catfish.cpus=4
multipass set local.giving-catfish.disk=60G
multipass set local.giving-catfish.memory=7G

5. Multipass Sanal Makinesi Hakkında Detaylı Bilgi Almak

Mevcut sanal makineler hakkında detaylı bilgi alabilmek için multipass info komutunu kullanabilirsiniz.

$ multipass info master
Name:           master
State:          Running
IPv4:           172.19.108.212
Release:        Ubuntu 22.04.3 LTS
Image hash:     870bd58b5c1e (Ubuntu 22.04 LTS)
CPU(s):         1
Load:           0.00 0.00 0.00
Disk usage:     1.5GiB out of 4.8GiB
Memory usage:   202.0MiB out of 892.2MiB
Mounts:         --

Tüm bilgileri tek seferde almak yerine multipass get komutu ile tek tek alabilirsiniz. Örneğin bir sanal makinenin CPU, RAM ve disk bilgilerini şu komutlarla öğrenebilirsiniz.

$ multipass get local.master.cpus
4
$ multipass get local.master.disk
60.0GiB
$ multipass get local.master.memory
7.0GiB

Kullanabileceğiniz tüm key değerlerini multipass get --keys ile görebilirsiniz.

$ multipass get --keys
client.apps.windows-terminal.profiles
client.gui.autostart
client.gui.hotkey
client.primary-name
local.bridged-network
local.driver
local.image.mirror
local.master.cpus
local.master.disk
local.master.memory
local.passphrase
local.privileged-mounts

6. Multipass Shell İle Sanal Makineye Bağlanmak

Oluşturduğunuz sanal makinelere shell prompt açmak ve komutlarınızı ilgili sanal makinenin içinde çalıştırabilmeniz için multipass shell komutunu kullanabilirsiniz.

$ multipass shell master
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-109-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue May 31 14:26:40 -03 2022

  System load:  0.0               Processes:             113
  Usage of /:   28.8% of 4.67GB   Users logged in:       0
  Memory usage: 21%               IPv4 address for ens3: 10.49.93.241
  Swap usage:   0%


1 update can be applied immediately.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@master:~$ 

Eğer sanal makine stopped or suspended durumundaysa, shell komutu sonrası otomatik olarak yeniden başlatılır.

Shell komutunu çalıştırırken sanal makine adı belirtmezseniz primary durumundaki sanal makine varsayılan olarak kullanılır. Eğer primary seçilen bir makine yoksa, yeni bir sanal makine oluşturulur ve primary seçilerek shell prompt'una bağlanılır.

Shell prompt'u sonlandırmak için logout, exit komutlarını veya Ctrl-D kombinasyonunu kullanabilirsiniz.

7. Multipass Exec İle Sanal Makinede Komut Çalıştırmak

Bir sanal makinede komut çalıştırabilmek için shell prompt'una bağlanmanıza gerek yoktur. multipass exec komutu ile komutlarınızı sanal makinede çalıştırıp sonucu elde edebilirsiniz.

$ multipass exec loving-duck -- pwd
/home/ubuntu

8. Multipass Sanal Makinelere SSH Bağlantısı Yapmak

Sanal makinelerin shell prompot'una bağlanmak için multipass shell komutu yerine direkt SSH protokolü kullanmak istiyorsanız öncelikle multipass list komutuyla sanal makineye atanan IP adresini öğrenmelisiniz.

$ multipass list
Name                    State             IPv4             Image
master                  Running           172.19.108.212   Ubuntu 22.04 LTS

9. Multipass Sanal Makineleri Başlatmak, Durdurmak, Askıya Almak ve Silmek

Sanal makinelerizi start, stop, suspend ve delete komutlarıyla istediğiniz duruma getirebilirsiniz.

Tüm bu komutları çalıştırırken tek bir sanal makine adı veya birden fazla makine adını boşlukla belirtebilirsiniz. Ayrıca --all parametresi ile tamamını seçebilirsiniz.

Örnek kullanımları aşağıda görebilirsiniz.

multipass start loving-duck
multipass suspend loving-duck devoted-lionfish sensible-shark
multipass stop --all
multipass delete keen-yak

Bir sanal makineyi sildiğinizde halen DELETED olarak listede görebilirsiniz. Bu makineleri multipass recover komutuyla tekrar çöp kutusundan çıkarabilirsiniz.

$multipass delete keen-yak

$ multipass list
Name                    State             IPv4             Release
keen-yak                DELETED           --               Not Available

$ multipass recover keen-yak
$ multipass list
Name                    State             IPv4             Release
keen-yak                STOPPED           --               Ubuntu 18.04 LTS

Eğer bir sanal makineyi kalıcı olarak silmek istiyorsanız delete komutuyla sildikten sonra multipass purge komutunu kullanabilirsiniz. Veya delete komutunu --purge parametresi ile kullanmakta başka bir alternatiftir.

$ multipass delete keen-yak
$ multipass purge
$ multipass list
No instances found.

$ multipass delete --purge keen-yak

10. Multipass Sanal Makinelere Ana Makineyi Mount Etmek

Ana makine üzerindeki dosya sistemini sanal makinelere mount ederek, ilgili dosya sistemine sanal makineler içinden erişebilirsiniz.

Örneğin ana makine üzerindeki bir dizini multipass mount komutu ile aynı isimle sanal makineye mount edebilirsiniz.

$ multipass mount /home/ismet keen-yak
$ multipass info keen-yak
…
Mounts:         /home/ismet => /home/ismet

Sanal makine içinde farklı bir mount noktası belirlemek için path'i açıkça yazmalısınız.

$ multipass mount /home/ismet keen-yak:/some/path

mount komutunu ayrı kullanmak yerine multipass launch komutuyla da kullanabilirsiniz.

multipass launch --mount /some/local/path:/some/instance/path

Mount edilmiş dosya sistemlerini multipass umount komutuyla umount edebilirsiniz.

$ multipass umount keen-yak
$ multipass info keen-yak                
…
Mounts:         --

11. Multipass Ana Makine ve Sanal Makineler Arasında Dosya Transferi

Multipass ile ana makine ve sanal makine arasında dosya transferi yapabileceğiniz gibi direkt sanal makineler arasında da dosya tranfer işlemlerini multipass transfer komutuyla yapabilirsiniz.

Örneğin ana makinedeki bir dizini master isimli sanal makineye trasnfer edelim.

multipass transfer /home/ismet master:/home/ismet

Sanal makineler arasında da benzer şekilde transfer işlemini aynı anda birden fazla dosya için gerçekleştirebilirsiniz.

multipass transfer worker:/etc/file1 worker:/etc/file2 master:/etc

Sanal makineleri belirtirken <sanal makine adı>: kullanmalısınız.

12. Multipass Özel Network Interface Kullanmak

Sanal makineleri oluştururken, eğer özellikle belirtmezseniz "Default Switch" olarak belirlenen interface/adapter kullanılır.

Fakat --network parametresi kullanarak host makine üzerindeki istediğiniz bir veya birden fazla interface/adapter'ı sanal makineye ekleyebilirsiniz.

--network parametresi 3 property ile birlikte kullanılabilir:

  • name — host makine üzerindeki interface/adapter adı.
  • modauto (varsayılan) veya manual değerlerini alabilir.
  • mac — cihaz için kullanılacak özel bir MAC adresi belirleyebilirsiniz.

Bu özellikler <key>=<value>,… biçiminde belirtilebilir. Ancak en yaygın kullanım biçimi sadece interface/adapter belirtilen kullanımdır. Örnek kullanımı aşağıda görebilirsiniz:

$ multipass launch --network en0 --network name=bridge0,mode=manual
Launched: upbeat-whipsnake

Kullanabileceğiniz tüm interface/adapter seçeneklerini multipass networks komutuyla görebilirsiniz.

$ multipass networks
Name                    Type      Description
Default Switch          switch    Virtual Switch with internal networking
Ethernet 2              ethernet  Intel(R) Ethernet Connection (13) I219-LM
ExtSwitch (Ethernet 2)  switch    Virtual Switch with external networking via "Ethernet 2"
Wi-Fi 2                 wifi      Intel(R) Wi-Fi 6 AX201 160MHz

13. Multipass Alias Kullanımı

Multipass ile tüm komutları uzun uzun yazmak yerine alias kullanarak daha hızlı komutlar yazabilirsiniz.

Bir alias oluşturmak için multipass alias komutnu kullanabilirsiniz. Aşağıdaki komut mls komutunu yazdığınızda master isimli sanal makine içinde ls komutunu çalıştırmanıza izin verir.

multipass alias master:ls mls

Bir alias oluşturduğunuzda, çalıştırılacak komutun çalışma dizini, sizin alias oluşturduğunuz dizin olarak belirlenir. Bu davranışı değiştirmek ve komutları varsayılan sanal makine dizininde (/home/ubuntu) çalıştırmak için --no-map-working-directory parametresini kullanabilirsiniz.

multipass alias master:ls mls --no-map-working-directory

Tüm alias'ları listelemek için multipass aliases komutunu çalıştırabilirsiniz.

$ multipass aliases
Alias  Instance   Command  Working directory
lscc   crazy-cat  ls       map
pwdcc  crazy-cat  pwd      default

Bir alias'ı kaldırmak için multipass unalias komutunu kullanabilirsiniz.

multipass unalias lscc

Tamamını kaldırmak için --all parametresini kullanabilirsiniz.

multipass unalias --all

Oluşturduğunu alias'ları çalıştırmanın ise iki yöntemi vardır. Birincisi direkt multipass komutuyla kullanabilirsiniz ve -- ile argümanlar geçebilirsiniz.

multipass lscc
multipass lscc -- -l

İkinci yöntem ise multipass alias script dizinini path ekleyerek direkt alias komutunu çalıştırabilirsiniz.

$ multipass alias crazy-cat:ls lscc
You'll need to add this to your shell configuration (.bashrc, .zshrc or so) for
aliases to work without prefixing with `multipass`:

PATH="$PATH:/home/user/snap/multipass/common/bin"

Gerekli path'i ekledikten sonra direkt lscc komutunu çalıştırabilirsiniz.

14. Multipass Cloud-Init İle Ön Yapılandırma

Multipass ile sanal makine oluştururken cloud-init kullanarak bir ön yapılandırma hazırlayabilirsiniz.

Örneğin sanal makineye bir DNS eklemek için systemd-resolved.yaml isimli dosyasının içeriğini aşağıdaki gibi hazırlayabilirsiniz.

#cloud-config
bootcmd:
- printf "[Resolve]\nDNS=8.8.8.8" > /etc/systemd/resolved.conf
- [systemctl, restart, systemd-resolved]

Ardından sanal makineyi oluştururken bu dosyayı belirtebilirsiniz.

$ multipass launch --cloud-init systemd-resolved.yaml