PERINGATAN, Aku akan mengambil harta karunmu. Eh, bukan. Kalo disebut tutorial sebenarnya enggak juga, postingan ini lebih ke catatan pribadi. Dan mungkin akan banyak yang sulit dipahami, terutama jika pembaca belum pernah menggunakan Linux, atau belum pernah menggunakan virsh. Namun, saya akan tetap menulikan ini sebagai “tutorial” yang mungkin akan saya baca sendiri di masa yang akan datang.

Tutorial ini membutuhkan alat-alat sebagai berikut :

  • laptop/server dengan spesifikasi yang cukup
  • OS Linux dengan aplikasi terinstall:
    • virt-manager
    • wget
    • vim
    • mkisofs

Download cloud image Ubuntu 18.04

mkdir ~/virsh && cd ~/virsh
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img

buat salinan image Ubuntunya

cp bionic-server-cloudimg-amd64.img gitlab.img

Persiapkan cloud-init.iso

mkdir cloud-init && cd cloud-init
wget https://raw.githubusercontent.com/larsks/virt-utils/master/create-config-drive
vim user-data

isikan user-data sebagai berikut :

#cloud-config
users:
- name: samsul
  ssh-authorized-keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuoi+XDKTfEhE6tSFA7MrEy0iVqJP17E42O5lTYQZ+0gJxBKKotvct2RAEmmV9qoBeikNOC4dWNIxru7rVn83zVM1slpR5OkcB5dirkBGyySUDq0QRaRczx4ZY8aJyouXyjsFZr5/sdiRH6FGOSKAOFjpr5r6sad4QB/1qGZa2e5QzGbp09Ipc0S+NwTGARyX/VN+ffchOW5BP+T4YqwDLY7mRMtoJjR8WnwRn/quC/PTvGA/Z2NpM7z3502EcKRHP7CrVZplhWfLXYtKkbMSK4lndNrDs0Sy+CcpIzgy1oU4mNGhwCHSoK9l9kEW1727MXXEPsSYIqcMLRSY3wSVv samsul@studio
  sudo: ['ALL=(ALL) NOPASSWD:ALL']
  groups: sudo
  shell: /bin/bash
- name: root
  ssh-authorized-keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuoi+XDKTfEhE6tSFA7MrEy0iVqJP17E42O5lTYQZ+0gJxBKKotvct2RAEmmV9qoBeikNOC4dWNIxru7rVn83zVM1slpR5OkcB5dirkBGyySUDq0QRaRczx4ZY8aJyouXyjsFZr5/sdiRH6FGOSKAOFjpr5r6sad4QB/1qGZa2e5QzGbp09Ipc0S+NwTGARyX/VN+ffchOW5BP+T4YqwDLY7mRMtoJjR8WnwRn/quC/PTvGA/Z2NpM7z3502EcKRHP7CrVZplhWfLXYtKkbMSK4lndNrDs0Sy+CcpIzgy1oU4mNGhwCHSoK9l9kEW1727MXXEPsSYIqcMLRSY3wSVv samsul@studio
timezone: Asia/Jakarta

buat file iso cloud-init

chmod +x create-config-drive
./create-config-drive -u user-data cloud-init.iso
mv cloud-init.iso /home/samsul/virsh/cloud-init.iso
cd ..

Buat sebuah network dengan mode nat terlebih dahulu di virsh

cat << EOF > network.xml
<network connections='1'>
  <name>int0</name>
  <uuid>62e8ba7d-c319-4a47-86bc-24e215c389a8</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr2' stp='on' delay='0'/>
  <mac address='52:54:00:d5:d8:25'/>
  <domain name='int0'/>
  <ip address='10.11.12.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='10.11.12.10' end='10.11.12.99'/>
    </dhcp>
  </ip>
</network>
EOF

Gunakan net-define untuk membuatnya

sudo virsh net-define --file network.xml

Buat VM gitlab dengan virt-install

sudo virt-install --import --name gitlab --memory 4096 --vcpus 2 --cpu host \
     --disk /home/samsul/virsh/gitlab.img,format=qcow2,bus=virtio \
     --disk /home/samsul/virsh/cloud-init.iso,device=cdrom \
     -w network=int0 --check all=off

Setelah hidup, ubah ukuran disk image menjadi 40GB

sudo virsh blockresize gitlab --path=/home/samsul/virsh/gitlab.img --size=40GB

Restart kembali VM-nya agar ukuran diska-nya berubah sesuai ukuran yang kita inginkan.

Untuk keperluan backup dan/atau membuat vm lain, kita dapat memanfaatkan virt-clone. Misalnya sebagai berikut:

sudo virt-clone -o gitlab -n bionic -f /home/samsul/virsh/bionic.img

Namun pastikan VM original (dalam hal ini bernama gitlab) dalam kondisi shutdown atau mati. Nyalakan VM gitlab dengan

sudo virsh start gitlab
sudo virsh list --all

Hasilnya sebagai berikut:

Id   Name     State
-------------------------
1    gitlab   running
-    bionic   shut off

Jika kita ingin melihat alamat IP VM gitlab bisa pake cara ini:

sudo virsh domifaddr gitlab
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:b5:e8:09    ipv4         10.11.12.99/24

Setelah mengetahui alamat ip vm, seharusnya kita sudah bisa melakukan ssh

ssh samsul@10.11.12.99

Demikian, selamat menikmati.