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.
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:
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ı.mod
—auto
(varsayılan) veyamanual
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