"Enter"a basıp içeriğe geçin

Vagrant Box Oluşturma

Last updated on 28 Ocak 2021

Makinem üzerinde projects/vagrant_box adında bir dizin oluşturup işlemlerimi oradan gerçekleştireceğim. Box için Ubuntu MinimalCd isosunu kullanacağız.

https://help.ubuntu.com/community/Installation/MinimalCD
http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso
curl http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso -o mini.iso

komutuyla ilgili iso yu dizinimize indirelim.

Virtualbox üzerinden bir makine oluşturalım ve ilgili iso ile boot edelim. Boot öncesi makine ayarlarından kullanmadığımız özellikleri kapatabiliriz. USB ve audio ayarları gibi. Network sekmesi altından port forwardingi aktif edip, Host portu 2222 guest portu 22 olarak tanımlayalım. Ek olarak NAT olarak bıraktım network yapılandırmasını.

ISO’muzu ekleyip kurulumumuzu başlatalım. Kurulum esnasında vagrant isminde bi kullanıcı oluşturup, parolasını da aynı şekilde tanımladım. Root parolasını vagrant olarak güncelledim.

vagrant isimli kullanıcıma sudo yetkisi tanımlamak için aşağıdaki adımlar ile ilerliyorum. Root kullanıcısındayken,

visudo -f /etc/sudoers.d/vagrant
dizinini oluşturuyorum ilgili dizin içerisine aşağıdaki satırı ekleyip, kayıt edip çıkalım.
vagrant ALL=(ALL) NOPASSWD:ALL

İşlemimiz tamamlandıktan sonra Hashicorp firmasının github sayfasına gidip, key indirip sistemimize tanımlayacağız. Bu anahtalar, temel box oluşturanlara temel anlamda kutularına erişmek üzere sunuluna “güvensiz” genel/özel anahtar eşleşmesidir, böylece vagrantdan boxlara otomatik olarak ssh yapabilir. Bir ekip ve ya şirketle veya özel bir box ile çalışıyorsak ve daha güvenli bir erişim istiyorisek, kendi anahtarlarmızı oluşturmalı ve Vagrantfile da özel anahtarı config.ssh.private_key_path ile yapılandırmamız gerekmektedir.

https://github.com/hashicorp/vagrant/tree/master/keys

/home/vagrant/.ssh dizinini oluşturup ilgili keyi wget komutu ile ilgili dizin altına indirelim.

keyimizin adını değiştirip key ve dizin yetkilendirmelerini aşağıdaki ekran görüntüsündeki gibi düzenleyelim.

Sıra geldi ssh konfigurasyonlarına göz gezdirmeye,

vi /etc/ssh/sshd_config

Konfigurasyonun en alt satırına aşağıdaki satırı ekleyelim ve kaydedip çıkalım.

AuthorizedKeysFile %h/.ssh/authorized_keys
service ssh restart

komutu ile ssh servisini yeniden başlatıp, konfigurasyonumuzun devreye girmesini sağlayalım.

apt-get install -y gcc build-essential git linux-headers-$(uname -r) dkms

komutunu çalıştırarak gerekli paketlerimizin kurulumunu gerçekleştirelim.

VirtualBox arayüzümüzden Devices-> Insert Guess Additions CD Images seçip makinemize insert edelim.

mount /dev/cdrom /mnt 

komutu ile /mnt dizinine bağlayalım.

cd /mnt
./VBoxLinuxAdditions.run

komutu ile ilgili paketlerimizi kuralım.

yeni kurduğumuz makineyi şimdi bi kenara bırakıp kendi makinemize dönelim. Aşağıdaki komutu çalıştıralım. Aşağıda –base olarak tanımlanmış olan ubuntu64-base Virtualbox üzerine kurmuş olduğumuz sanal makinenin ismidir. Kurulum yaparken farklı bir isim belirtmişseniz düzenlemeye unutmayın.

Box paketlemeden önce sürücüyü “sıfırlamak” gerekecek. “Bu, temeldeki diskle ilgili parçalanma sorunlarını düzeltir ve daha sonra çok daha verimli bir şekilde sıkıştırmasına olanak tanır.”

sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY
vagrant package --base ubuntu64-base

Sonradan farkettim, sanal makine dizinini kurulum esnasında proje dizininizin olduğu yere yapmakta fayda var. Yoksa işlem gerçekleşmiyor.

Aşağıdaki komut ile ubuntu64 adında box oluşturup, box list komutuyla da mevcut boxlarımızı görüntüleyelim.

vagrant box add ubuntu64 package.box 
vagrant box list

Ubuntu64 boxımızı kullanarak makinemizi oluşturalum -m etiketi ile minimum içerikde konfigurasyonumuzu belirleyelim.

vagrant up komutu ile makinemizi ayağa kaldıralım.

Makinemiz ayağa kaltıktan sonra vagrant ssh komutu ile ssh bağlantımızı gerçekleştirelim.

Bir sonraki yazımızda görüşmek üzere,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir