Bicep ile Infrastructre as Code – Bölüm 4: For Loop Kullanımı
  1. Anasayfa
  2. Microsoft Azure

Bicep ile Infrastructre as Code – Bölüm 4: For Loop Kullanımı

0

Bicep makale serisinin üçüncü bölümde if condition kullanımından kısaca bahsetmiştim. Bu bölümde de for loop kullanarak birden fazla resource oluşturma gereksinimlerinde kod tekrarının önüne nasıl geçebileceğimizi anlatacağım.

Bicep’te standart bir for loop kullanabileceğimiz gibi for each tarzında bir array içerisinde de dönebiliyoruz.

İlk örneğimizde yine container registry üzerinden ilerleyelim. 3 tane container registry oluşturmak istiyorum. Bunu işi uzatmak isterseniz isim parametresine farklı değerler verip tekrar tekrar çalıştırarak yapabileceğiniz gibi, Resim-1‘de görebileceğiniz gibi min 1, max 5 olarak şekilde bir resourceCount parametresi tanımlayıp, resource tanımına for i in range(1, resourceCount) ekleyerek daha kolay bir şekilde çözebiliriz.

Resim-1

Böylelikle “az deployment…” komutunu bir kez çalıştırarak istediğimiz (Decorator’da belirlediğimiz max değeri) kadar container registry oluşturabiliyorum.

Resim-2

Şimdi de bir array örneği üzerinden 3 tane container registry oluşturacağım ve her bir container registry için farklı özellikler belirleyeceğim. Resim-3‘te göreceğiniz gibi crSettings adında, içerisinde de skuName, name, location ve adminUserEnabled değerlerini belirlediğim bir array tanımlıyorum.

Resim-3

Resource tanımında da for crSetting in crSettings şeklinde bir loop tanımı ile crSettings içerisindeki değerlere erişmek için crSetting adındaki objeyi kullanıyorum. İlgili komutu çalıştırdığımda ise Resim-4‘te göreceğiniz gibi 3 tane ve verdiğim değerlerde container registry oluştuğunu görebiliyorum.

Resim-4

Burada sizlerin de farkedeceğiz üzere yanlış bir kullanım var. İsim verirken hepsine tek tek 1, 2, 3 gibi hardcoded olarak değer vermiştim. Bu çok kullanışlı bir yöntem değil. Bu nedenle ilk örnekteki gibi isim parametresine değerini eklemek istiyorum.  Öncelikle crSettings array’inde yer alan name değerlerinde sondaki 1, 2 ve 3’ü siliyorum ve for loop tanımını for (crSetting, i) in crSettings olarak değiştirip, burada yer alan name değerini de ‘${crSetting.name}dev${i}’ olarak güncelliyorum (Resim-6).

Resim-6

Bu şekilde deployment yaptığımda ise isimlendirmelerin Resim-7‘de de göreceğiniz gibi belirttiğim şekilde oluştuğunu görebiliyorum.

Resim-7

Bu örnekte de hatalı bir kullanım yaptım. Deployment’ı resource group scope’unda yaptım ancak farklı location’lar tanımladım, yani deployment yaptığım resource group West Europe ama içerisinde UK South ve UK West’te yer alan 2 resource var, çok da mantıklı gelmedi :)

Bunu tarz durumları for loop ile birlikte if condition da kullanarak çözebiliriz. Burada da loop tanımı sonuna if condition ekliyorum: for (crSetting, i) in crSettings: if (crSetting.location == location)

Böylece location parametresinde gönderdiğim değer (default değer resource group’un location değeri) değilse, resource oluşmayacak. Örnekte sadece array’in son elementinin oluşmasını bekliyorum.

Resim-8

Komutu çalıştırdığımda ise beklediğim gibi sadece resource group’un location değeri (West Europe) ile aynı olan container registry’nin oluştuğunu görebiliyorum (Resim-9).

Resim-9

For loop ile oluşturduğunuz resource’lar aynı anda, paralel bir şekilde oluşturulur. Eğer batch’ler halinde yani teker teker, ikişer ikişer vb oluşturmak istiyorsanız batchsize decorator’ünü kullanabilirsiniz (Resim-10).

Resim-10

For loop’ları sadece resource başlangıcında değil, resource’ların property tanımlarında da benzer şekilde kullanabilirsiniz.

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

Referanslar

www.mshowto.org

Bicep documentation | Microsoft Docs

GitHub – mertyeter/bicep-samples

TAGs: Azure, Yazılım Geliştiriciler için Azure, Bicep, ARM Templates, JSON, Azure Resource Manager, IaC, Infrastructure as Code, VS Code, Visual Studio Code, Azure CLI, bicep nedir,bicep

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    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!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili

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