Vagrant Terminolojisi #2

article featured image penguin computing

Terminoloji

Bir dili, yapıyı, teknolojiyi en iyi şekilde öğrenmenin en temel kuralı, o yapının içinde barındırdığı kelimeleri ve anlamlarını bilmektir. Aslında bunu sadece teknoloji alanıyla sınırlandırmamalıyız. Bir boya ustasını düşünün mesela. "Hangi zemin, hangi tip boya ile boyanır ? saten ve toz boya nedir? nerede kullanılır?" gibi soruların cevabı aslında o işin temelinde bulunan terminolojiden geçiyor. Bu yüzden sadece terminolojiye özgü tek bir makale hazırlamak istedim. Umarım böylesi daha iyi olur.

Terminolojide bulunan kelimeler hep İngilizce karşılığı ile anılıyor. Bu durum nereye gidersek gidelim böyle. O yüzden bende aşağıda İngilizce başlıklar ve Türkçe karşılıkları ile birlikte vereceğim.

Tanımını anlayamadığınız kelime üzerinde çok durmayın. Bu kelimeler zaten uygulama üzerinde kullanıldıkça bilinç altınıza, ifade ettiği karşılık ile birlikte yerleşecektir.

Boxes (Kutular)

Kutu diye ifade ettiğimiz yapı Vagrant felsefesinin yapı taşını oluşturuyor. İçinde bulunmuş olduğunuz geliştirme ortamı sizin kutunuz demektir. Vagrantdaki geliştirme ortamınızı paylaşmanız demek, aslında kutunuzu paylaşmanız demek. Peki biz bu kutuları nasıl oluşturuyoruz ? İşte burada ecnebilerin Base Box dediği Temel Kutu kavramı ortaya çıkıyor.Temel Kutu larda genellikle sadece işletim sistemi ve gerektirdikleri kurulu olarak gelmektedir. Biz bu temel kutuları kullanarak, kendi özelleştirilmiş kutularımızı oluşturuyoruz.

Aşağıdaki görsele bir forumda rast geldim. Aslında kutu mantığı en iyi şekilde bu görselde izah edilmiş.

Vagrant Boxes

Temel kutular şu iki adreste kullanımıza sunulmuş durumda.

atlas.hashicorp.com

vagrantbox.es

##Providers (Sağlayıcılar)

Artık biliyorsunuz. Vagrant sanallaştırma yazılımlarını (VirtualBox, VMware vb.) kullanarak çalışıyor. İşte bu kullanılan sanallaştırma yazılımlarına Provider adını vermişler.

Vagrant ile kullanmak için sağlayıcı anlamında en iyi çözümler VirtualBox yahut VMware.

Biz bu yazı dizisinde VirtualBox yazılımını kullanacağız. VirtualBox işinizi fazlasıyla görecektir ve tamamen ücretsizdir. Vagrant ile VMware kullanmak isterseniz, bu hizmet belli bir ücrete mukabil veriliyor.

Plugins (Eklentiler)

Vagrant'ı geliştiren kimselerden farklı olarak bu işe gönül veren açık kaynak yazılımcılar tarafından geliştirilen ve size Vagrant kullanımında ek fayda ve özellikler kazandıran, bir işi yerine getiren küçük çaplı yazılımlardır.

Eklentilere ufak bir örnek verecek olursak; Biz ileride bir sunucu kuracağız ve bu sunucunun hizmet verdiği yerel ağ üzerinde bir IP adresi olacak. Bu IP adresinin 127.0.0.1 olduğunu farz edelim. Biz istiyoruz ki local sunucumuza bu IP adresi ile değil, anlaşılabilir bir karakter katarı ile, daha açık olmak gerekirse "local.dev" gibi bir ifade ile girmek istiyoruz diyelim. Gidip hosts dosyasına el ile girmektense, bu eklenti aracılığı ile Vagrant içerisinde bir tanımlama yaparak, hosts dosyasına bu tanımlamayı eklemesini söylüyoruz. Bu ve benzeri ufak işlere yarayan bir yığın eklenti bulunmakta.

Provisioners

Sanırım buna Vagrant terminolojisinin en kilit kelimelerinden biri diyebiliriz. Provisioner kelimesinin tam gediğe oturan anlamlı bir karşılığı olmasada, hüküm verici, yerine getirici, provizyon verici gibi bir anlama geldiğini söyleyebiliriz.

Hani ilk makalede söylemiştik. Vagrant istediğimiz yazılımları kuracak, bu yazılımların konfigürasyonlarının nerede olduğunu bilecek ve en önemlisi çalışmamız bittikten sonra bu yapıyı olduğu gibi ürün sunucumuza gönderecekti. İşte o işi bu arkadaş yapıyor.

Provision işini yapan ve en çok kullanılan üç adet yapı var. Bunları aşağıda listeleyelim.

1.Chef

Kendisi bu seride kullanacak olduğumuz provisionerdır.

Dil: Ruby

Kullanım yoğunluğu: Ruby geliştiricileri.

Modül Sistemi: Recipes/Cookbooks

Öğrenme eğrisi: Ruby diline biraz aşina olmakla birlikte eğri biraz daha minimize edilebilir. Genel olarak bakıldığında normal bir öğrenim eğrisine sahiptir.

2.Puppet

Dil: Ruby

Kullanım yoğunluğu: PHP geliştiricileri.

Modül Sistemi: Manifests

Öğrenme eğrisi: Ruby diline biraz aşina olmakla birlikte eğri biraz daha minimize edilebilir. Chef'e göre biraz daha zorlu eğriye sahip.

3.Ansible

Dil: Python/YAML

Kullanım yoğunluğu: Python geliştiricileri.

Modül Sistemi: Playbooks

Öğrenme eğrisi: Python diline biraz aşina olmakla birlikte eğri biraz daha minimize edilebilir.En sevimli öğrenme eğrisine sahip olandır.

Vagrantfile

Terminolojinin bir diğer önemli ifadesi Vagrantfile. İşte buraya da zurnanın zırt dediği yer diyoruz. Vagrantfile dediğimiz zât, basit bir metin dosyasından ibaret. Vagrant ile alakalı yapacağımız tüm tanımlamalar bu dosyada bulunuyor ve biz Vagrant'a "hadi çalış bakalım" dediğimiz anda, çalış dediğimiz dizinde bu dosyayı arıyor ve içerisindeki tanımlamalara göre kendisine verilen görevi icra ediyor. Dizinde Vagrantfile dosyasını bulamazsa avazı çıktığı kadar bağırıyor.

Synced Folder (Senkronizasyon Klasörleri)

Şimdi önemli bir soru geliyor.

"İyi güzel de, ben proje dosyalarımı, kodlarımı,resim dosyalarımı kısacası proje dizinimi bu sanal sunucuya nasıl göndereceğim? Her değişiklik yaptığımda gidip VirtualBox içine mi kopyalacağım bu dosyaları?"

Hayır tabii. Vagrant size kendi makineniz ile sanal sunucu olarak çalışan makine arasında dosya senkronizasyonu yapmanızı sağlıyor. Kendi makinenizde kaynak klasörünüz var, birde sanal makinede hedef klasörünüz. İşte Vagrant bu ikisini birbirine eşitliyor.

Bir örnek verecek olursak; Akıllı telefonunuza Dropbox yazılımını muhtemelen kurmuşsunuzdur. Dropbox ne yapıyor? Cihazınızla bir fotoğraf çektiğiniz anda, fotoğraf diske kaydediliyor. Kayıt işlemi bittiği anda Dropbox bu fotoğrafı alıyor ve kendi bulut sunucusuna gönderiyor. Yani sizin cihazınızdaki resimler klasörünü, bulut sunucudaki hedef klasörünüzle eşitlemiş oldu. Siz cihazınızdaki o klasöre ne eklerseniz ekleyin, aynısı Dropbox'ın klasörünede gidecektir. Anlaştık değilmi?

Bu kadar teori yeter. Önümüzdeki makaleden itibaren aksiyon ve dolayısıyla eğlence başlıyor.

Serinin Tüm Başlıkları