Bu sıralar Azure üzerine yaptığım çalışmalarda DevOps kültürünü ve paralelinde de araçlarını kullanmaya özen gösteriyorum. Bu çalışmalar sonrasında kazanmış olduğum deneyimleri süredir yazmayı planlıyordum ama nereden ve nasıl başlayacağıma karar verememiştim. Bende araçlarını çok beğendiğim bir firmanın yazıları ile başlamaya karar verdim. Henüz 30 yaşına ulaşmamış kodlama dahisi bu genç adam milyon dolarlık bir şirketin kurucusu ve 16 yıla yakın bir kariyere sahip.İlk teknik startup’ına 12 yaşındayken başlıyor ve kendisinin anlatımı ile aylık 25$ dolar karşılığında video oyunlarından hileler buluyor. 13 yaşında iken o kadar çok bilgisayar ile vakit geçiriyor ki ailesi bu dahi çocuğa haftada sadece iki saat bilgisayar kullanım izni vermek zorunda kalıyor, tabi ki durmuyor ve yatağa gittikten sonra gizlice kodlama çalışmalarına devam ediyor. Yazdıklarım birçoğunuz için gerçekçi gelmeye bilir ama kendisi Vagrant, Terraform, Vault, Nomad, Packer, Serf, Consul gibi DevOpskültüründe sıklıkla tercih edilen yazılımların üreticisi olan HashiCorp şirketinin kurucu ortağı ve aynı zamanda CEO’su Mitchell Hashimoto.
Bende bir süredir işim ve hiç bitmeyen öğrenme merakımdan dolayı HashiCorp’un Vagrant ve Terraform ürünlerini geliştirme ortamı ve kodlama için kullanıyorum. Sizlere birkaç makale serisi oluşturarak hem Vagrant’ı hem de Terraform’u kısaca anlatacağım, kurulumlarından ve kullanımlarından bahsedeceğim sonrasında altyapı olarak Azure ortamında çalışmayı göstermeyi hedefliyorum. İlk olarak Developer Productivity Tools olarak Vagrant ile başlayacağım sonrasında da Infrastructure automation alanında çok fazla kullanılan bir tool olan Terraform ile devam edeceğim.
Amacım uçtan uca size Vagrant’ı anlatmak değil, bu makale de sizlere aşağıdaki soruları yanıtlamaya çalışacağım sonrasında da Vagrant’ın ile Azure kullanımının nasıl olduğunu anlatacağım. Bu arada Vagrant hakkında daha fazla bilgi isteyenleriniz için OneDrive’daki kütüphanemize Mitchell Hashimoto’nun Vagrant: Up and Running adında yazdığı 157 sayfalık kitabını attım.
-
Vagrant’ı tanıyalım?
-
Vagrant terimleri ve kurulumu?
İsterseniz artık Vagrant’ı tanımaya, ne işe yaradığını anlamaya başlayalım;
Vagrant, taşınabilir sanal yazılım geliştirme ortamları oluşturmak ve sürdürmek için açık kaynaklı bir yazılım ürünüdür, biraz daha açarsak sanal makine ortamlarını tek bir iş akışında oluşturmak ve yönetmek için kullanılan bir araçtır. Kullanımı kolay bir iş akışı ve otomasyona odaklanan Vagrant, geliştirme ortamı kurulum süresini kısaltır. Vagrant, sanallaştırma yazılımının üstünde bir sarıcı gibi yer alır ve geliştiricinin sağlayıcılarla (providers terimini yazının ilerleyen bölümünde anlatacağım) kolayca etkileşimde bulunmasına yardımcı olur. Chef veya Puppet kullanarak sanal ortamların konfigürasyonunu otomatikleştirir ve kullanıcının diğer sanallaştırma yazılımlarını doğrudan kullanmasına gerek kalmaz.
Vagrant’ın resmi sitesinde yazan bir cümle ile ne işe yaradığını anlatmak istiyorum; “works on my machine“- “makinemde çalışıyor” bunu sanırım duymayanımız kalmamıştır. Özelikle yazılım dünyasında çok daha fazla duyulan bu deyiş J geneli itabari ile şudur kendi ortamında yazılımı güncelleyen ya da sorunu çözen bir yazılım geliştiricisi kodunu production – canlı ortama attığında çalışmayabilir. Bir projeyi birden fazla yazılım geliştirici birbirinden farklı ortamlarda geliştirebilir işte bu tarz farklı ortam sorunlarından kaynaklanan poblemlemler Vagrant ile rahatlıkla çözülebilir.
Ben Vagrant’ı şu şekilde tanımlıyor ve özetliyorum sanallaştırma araçlarınızdan birini kullanarak herkese hızlıca, taşınabilir, yönetilebilir bir geliştirme ortamı sağlayan araçtır.
Vagrant terimlerini inceleyelim ve sonrasında hızlıca kurulum dosyasını nereden indireceğinizi ve nasıl kurulum yapacağınıza bakalım;
Vagrantfile: Vagrantfile’ın aslına bakarsanız her türlü tanımın tutulduğu basit bir metin dosyasıdır. Bir proje için gereken makine tipini ve bu makinelerin nasıl yapılandırılacağı ve sağlanacağını bu metin dosyasının içinde tasarlanır. Bu tasarlamadan sonra bu dosyaya Vagrantfiles deniyor.Bu dosyanın sözdizimi Ruby’dir, ben bugüne kadar hiç Ruby programlama dili kullanmadım ancak Vagrantfile açtığımda içinde ne demek istendiğini çok rahatlıkla anladım. Vagrantfile içeriği çoğunlukla basit değişken atamasından oluşmaktadır bu sebepten Vagrantfile’da değişiklik yapmak için Ruby programlama dilinin bilgisi gerekli değildir.
Share – Paylaşım: Bana Vagrant’ta en tanıdık gelen terim Share olmuştu :). Temel olarak vagrant share komutu ile ortamınızı diğer dış dünya ve hemen hemen tüm ağ ortamlarıyla Vagrant arasında doğrudan işbirliği yapmayı mümkün kılar. Örneğin Vagrant box içerisindeki bir klasörü gerçek bilgisayarınızla paylaşabilmeniz gibi.
Boxes – Kutular: Vagrant ortamları için paket formatıdır. Bir kutu, Vagrant’ın aynı çalışma ortamını desteklediği her platformda herkes tarafından kullanılabilir. Kutuları bu adresten indirebilirsiniz.
Plugins – Eklentiler: Adından da anlaşılan bir Vagrant terimi de eklentiler.Vagrant’a ek işlevsellik ve özellikler katmak için kullanılır.
Providers – Sağlayıcılar: Vagrant Box’lar sanallaştırma ortamlarını kullanarak çalışır bunlara sağlayıcı denir. Sağlayacı olarak kullanılan sanallaştırma yazılımları hepinizin çok iyi bildiği ve kullandığı VirtualBox, VMware ve Hyper-V’dir.
Provisioners – Sağlama: Otomatik olarak yazılım yükleyebilmenize, yapılandırmaları değiştirmenize ve makinenin daha fazlasını yapmanıza olanak tanır. Vagrant Provisioner olarak en çok kullanılan araçlara Ansible, Chef, Docker, Puppet, Salt örnek olarak verilebilir.
Vagrant terimlerini öğrendik bundan sonra aynı dili konuşabileceğiz ve işimiz daha kolay olacak, zaman kaybetmeden Vagrant kurulumuna geçebiliriz. Vagrant’ın kurulum dosyasını indirmek için bu linketıklamanız yeterli. Vagrant’ın en son sürümü olan 2.1.5’e ait mevcut indirmeler aşağıdaki ekran görüntüsüne olduğu gibi farklı işletim sistemlerine göre yer almaktadır. Ben Windows 10 işletim sistemli laptop’a yükleyeceğim 64 bitlik kurulum paketini indiriyorum.
200 küsür MB’lık kurulum dosyası birkaç dakika içinde iniyor ve sihirbaz yardımı ile basitçe kurabiliyorsunuz. Vagrant ve Windows ile ilgili yaşadığım tecrübeyi kısaca belirteyim, benim önerim Vagrant kullanmayı düşünüyorsanız Windows işletim sisteminden ziyade CentOS, Debian gibi Open source bir işletim sistemi seçin. Nedenini soracak olursanız iki nedeni var birincisi Provision kısmında birkaç sorun ile karşılaşıbiliyorsunuz, ikincisi de Vagrant’la ilgili bir sorun yaşadığınız da araştırma yaptığınızda neredeyse tüm çözüm örnekleri Open source işletim sistemleri üzerinde verilmiş olarak çıkıyor.
Temel Vagrant komutlarına geçmek istiyorum, en sık kullandığım Vagrant komutlarını aşağıda sıraladım;
vagrant box : Kutuları yönetmek için kullanılan komuttur. En sık kullanılan bir kaç alt komutu şu şekildedir;
vagrant box add (URL Adresi) veya Title komutunu kullanarak buluttan ve diğer sağlayacılardan indirmenizi sağlar
vagrant box list bu komutu kullanaran mevcut kutuların listesini görürsünüz.
vagrant box remove (Box adı) bu komut ile ismi girilen kutu kaldırılır.
vagrant init [name [url]] : Bu komut ile Vagrantfile oluşturulur.
vagrant version : Bu komut ile yüklediğiniz Vagrant sürümünün yanı sıra şu anda mevcut olan Vagrant’ın en son sürümünü görebilirsiniz.
vagrant validate : Bu komut Vagrantfile’ınızı doğrular.
vagrant up [name|id] : Bu komut ile konuk makinelerinizi (Guest VM) Vagrantfile’ınıza göre oluşturur ve yapılandırır.
vagrant halt [name|id] : Bu komut, çalışan sanal makineyi kapatır.
vagrant reload [name|id] : Bu komut ile sanal makine yeniden başlatılır.
vagrant suspend [name|id] : Bu komut sanal makineyi mevcut hali ile askıya alır.
vagrant resume [name|id] : Bu komut ile daha önce askıya alınmış olan,ya da askıya alma komutuyla Vagrant tarafından yönetilen bir makineyi sürdürür.
vagrant destroy [name|id] : Bu komutu çalıştırdıktan sonra, konuk makinenizi hiç bir zaman yaratmamışsınız gibi bilgisayarınızda siler.
vagrant connect NAME : Connect komutu, paylaşılan ortamlara erişimi etkinleştirerek paylaşımı sağlar.
Son olarak diğer tüm komutlar ve parametreler için en büyük destekcimiz help komutuna hiç çekinmeden başvurabilirsiniz. Aşağıdaki ekran görüntüsünde görebileceğiniz gibi diğer Vagrant komutlarını da bizlere listeliyor bunun dışında Vagrant komutlarını öğrenmek için bu linki de kullanabilirsiniz.
Vagrant makale serisinin ilkini burada bitirmek istiyorum, ikinci bölümde Vagrant box’lar ve diğer ayarlamaları ineleyip Azure için hazırlıklara geçeceğiz.
Bir başka Azure yazısında görüşmek üzere.
Ka®a