Packer ile Azure üzerinde VM Image Yönetimi – Bölüm 1
  1. Anasayfa
  2. DevOps

Packer ile Azure üzerinde VM Image Yönetimi – Bölüm 1

0

Packer, HashiCorp tarafından sunulan tek bir kaynak konfigürasyonı ile birden fazla farklı platformlar için Virtual Machine veya konteyner imajları oluşturmak için kullanılan bir araçtır. Bu yazı serisinde Azure özelinde custom image’lerin nasıl oluşturulacağını açıklayacağım ancak önce Packer nedir kendisi tanıyalım. Kısacası Packer, Microsoft Azure’da spesific image oluşturmak, tanımlamak için kullanılabilen açık kaynaklı bir araçtır. HashiCorp tarafından bizlere sunulan bu araç ile Ansible, Powershell DSC etc. İle birlikte kullandığınız zaman Infrastructure as code yönetimini başka bir boyuta taşıyor olacaksınız. MsHowto üzerinde bulabileceğiniz, Mustafa Kara tarafından Terraform ve Merve İşler tarafından yazılan Ansible yazı serisi okumanızı tavsiye ederim. Packer, birden fazla platformda çalışır, Bu yazı serisinde Microsoft Azure üzerinde custom image’ler oluşturmak ve saklamak için örnekler gerçekleştirip, Packer’in Azure Resource Manager (ARM) bütünleşip, Azure Managed Image ile harika ve sorunsuz bir uyum içinde çalıştığına şahit olacaksınız.

Resim-1

Öncelike yazı serimize başlamadan önce, sürecin nasıl ilerleyeceğini aşağıdaki adımlar ile özetleyelim. Bu örnek senaryo içerisinde Windows Server bir image oluşturup içerisinde Web Server hizmetini aktif hale getireceğiz. Neden ve niçin böyle bir senaryo yaptığımızı ilerleyen kısımlarda anlatacağım. Sırasıyla adımlara göz gezdirelim.

  1. ) Packer aracının yüklenecek. ( HashiCorp sayfasından elde edilebilir.)
  2. ) Azure Active Directory Hizmet üzerinde Service Principal Name oluşturulacak.
  3. ) Mevcut bir Azure Marketplace içerisinde bulunan OS imajı referans alınıp, özelleştirecek ve imaj için şablon kullanılacak. Bu şablon JSON formatında olacak.
  4. ) Imaj oluşturmak için JSON formatı belirtilen nitelikler sayesinde imaj oluşturun (İhtiyaç duyduğunuzda deploy edilebilir durumda sizi bekliyor olacak.)
  5. ) Packer ile ilk imaj oluşturma sonrası test amaçlı deploy üzerinden yeni bir VM deploy ederek sonucu görmek.

 

Packer Edinme ve detaylı dökümantasyon için HasciCorp sayfası bizlere çok güzel ve detaylı açıklamalar vermektedir. Packer edinmek için şu sayfa üzerinden ilgili ‘Packer.exe’ indirebilirsiniz. Download Link : https://www.packer.io/downloads.html

Packer aracını artık edindik ve bir sonraki adımımıza geçebiliriz, bunun için Azure Active Directory üzerinden Service Principal oluşturmamı gerekmektedir. Service Principal kısaca, Azure uygulamanız için bir identity tanımlamak veya oluşturmak ve doğal olarak subscription içerisinde yetki alarak işlemler yapmak olarak tanımlayabiliriz, Packer, bir imaj oluştururken Azure aboneliğinizdeki kaynakları oluşturmak ve silmek için bir takım izinlere ihtiyaç duyar. İşte bunların tamamı için, Azure Active Directory üzerinden Service Principal oluşturup Service Principal’a gereken hakları atayarak elde edilir. Bu genellikle tek seferlik bir şeydir, bu adımı bir kez yaparsınız ve yeni bir imaj oluşturmak istediğinizde Service Principal’ı yeniden kullanırsınız.

Bu işlemleri için süreci kolaylaştırmak adına sizinle bir script paylaşıyor olacağım. Bu sizin için koaly ve hızlı bir şekilde yeni bir Service Principal oluşturmanızı sağlayacak. Makale serisi boyunca, tüm yazdığım kod bloklarının hepsini Visual Studio Code üzerinden gerçekleştiyor olacağım. Bu yüzden Visual Studio Code üzerinde bulunan çalışma dosyamın hepsini son seride indirebilir olacaksınız.

Resim-2

Yukarıda çalıştırdığım “MsHowto-PackerPrep.ps1” adlı Powershell Scripti sayesinde Azure Active Directory üzerinden Service Principal oluşturma işlemini tamamladık, Ekranı ortadan ikiye böldüm, sol tarafta Powershell Script içerisindeki satırlar içerisinde yaptığımız adımları özetlemek gerekirse, Bir takım değerleri parametrik hale getirerek, Resource Group Name, Location, Image Name, Role Assignment ve Service Principal Password gibi değerleri istediğiniz gibi değiştirebilirsiniz. Script çalıştıktan sonra, Ekranından sağ tarafında en alta bulunan yeşil alan içerisinde, oluşan Service Principal Name için, tüm detayları görebilirisiniz, gizlilik açısından bazı alanları ben kapattım, siz çalıştırdığınıza size özel değerler üretecektir. Bu değerli daha sonra Packer ile oluşturmak istediğimiz image için geliştireceğimiz JSON içerisine yazıyor olacağız. Bu değerleri not alalım ve saklayalım. Ayrıca yukarıda yaptığımız tüm işlemleri isterseniz Azure CLI ile yapma şansına sahipsiniz, bu yüzden tamamen sizin tercihiniz.

Makalemizin adımlarına tekrar baktığımızda Packer ve Azure Active Directory üzerinde, Packer özelinde bir adet Service Principal oluşturma sürecini tamamladık. Visual Studio Code içerisinde görebildiğiniz üzere projemin içerisinde ‘Packer.exe’ görebilirsiniz.Şimdi ise proje dosyam içerisinde imaj dosyamı tanımlamak için bir adet JSON dosyası oluşturup bir takım tanımlamalar yapacağız ve bunları tek tek açıklamaya çalışacağım. Makale boyunca kullanacağım JSON dosyasının adı, “packerimage.json” olarak kullanmaya özen göstereceğim ve bunun yazım şeklinden tutun ne gibi özellikler göndererek kullandığımıza değineceğim.

Resim-3

Yukarıda görüldüğü üzere packerimage.json adında bir dosya oluşturdum ve içerisinde bir JSON formatında key-value şeklinde tanımlamalar yaptım fakat JSON formatından anlıyacağınız gibi, ikinci satırda görebileceğiniz üzere Variable nesnesinin alt kısmına bir takım key-value şeklinde tanımlamlar yaptım ve bu tanımların hepsi değişken olarak JSON dosyasının ilerleyen aşamalarında kullanılıyor olacak. Bu tanımlamalar içerisindeki tüm satırları nasıl dolduracağımızı bir sonraki yazımda bulabilirsiniz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

 TAGs: Packer, HashiCorp, Terraform, Ansible, Custom Image,Powershell DSC,Azure Resource Manager,Azure Resource Manager (ARM),Azure Managed Image,Azure Managed Image nedir,JSON,Packer ile Azure Image hazırlama

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Hasan Güral, Istanbul doğumlu ve uzun yıllardır bilişim sektöründe danışmanlıktan eğitmenliğe farkli pozisyonlarda görev almıştır. Üniversite eğitimiyle birlikte bilişim sektöründe Kibar Holding, Bilge Adam Bilgi Teknolojileri Akademisi ve PeakUp Bilgi Teknolojileri gibi farkli kurumlarda Kıdemli Danışman ve Eğitmen olarak sektöre yön veren projelerde yer almistir.Microsoft Azure alanında yapmış olduğu paylaşımlar ve katkılarından dolayı Microsoft Valuable Professional (Azure) unvanına hak kazanmıştır. Cloud teknolojilerinin otomasyon alaninda gelişmesiyle birlikte zamaninin bir çoğunu PowerShell, Event-Driven Orchestration, Infrastructure as a Code ve Configuration as a Code ile geçirmektedir.Kariyerine Ingiltere’de DevOps Engineer ve Automation Enthusiast rolü ile Cloud Rundle’da devam etmektedir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir