İkinci bölümde Bicep parametre kullanımından bahsetmiştim. Bu bölümde de if condition kullanarak Bicep template’lerini daha kullanışlı hale getirmeye çalışacağım.
Bicep, aşağıda göreceğiniz logical operatörleri destekliyor. Bu sayede de ihtiyaç doğrultusunda farklı şekillerde de kullanabiliyoruz.
- && (And)
- || (Or)
- ! (Not)
- ?? (Coalesce)
- ? : (Conditional)
En basit örnek olarak deployment yapacağımız ortam ile ilgili bir if condition tanımı yapabiliriz. Bu örnekte environment adında bir değişken tanımlayıp, bu değişkene de sadece dev, test ve prod değerleri girilmesini sınırlamak için allowed decorator‘ını kullanıyorum. Ancak burada istediğim durum, eğer environment değeri prod olarak seçilmişse, bir önceki bölümde oluşturduğum container registry’nin oluşturulmaması. Böylece prod ortamda yanlışlıkla resource oluşumunu engellemeye çalışacağım. Bunun sağlamak için de resource tanımı yaptığım yere, Resim-1‘de de görececeğiniz gibi bir if tanımı ekledim.
Resim-1
Environment parametresini de prod olarak aşağıdaki gibi tanımlayarak deployment işlemini başlatıyorum.
az deployment group create -g mshowto-rg \ --template-file main.bicep \ --parameters environment=prod
Buradaki beklentim herhangi bir deployment işlemi yapmamasıydı. Ancak Azure Portal üzerinde deployments’a baktığımda bir deployment işleminin yapıldığını, hatta başarılı bir şekilde tamamlandığını görüyorum. Paniğe gerek olmadığını ise deployment details altında herhangi bir resource görmediğimde anlıyorum :) (Resim-2).
Resim-2
Yine de emin olmak için ilgili resource group’a da bakarsanız, aslında herhangi bir deployment yapılmadığı görebilirsiniz.
Input parametrelerini kontrol ettiğimde ise environment parametresini de doğru bir şekilde tanımladığımı görebiliyorum (Resim-3).
Resim-3
If condition’larını sadece resource tanımında değil, parametrelerde de kullanabiliyoruz. Hatta willBeDeployed adında bir parametre tanımlayarak değerini conditional expression şeklinde belirleyelim. Environment değeri “prod” ise false, değilse true olacak. (Resim-4).
Resim-4
Bir sonraki bölümde for loop’ları nasıl kullanabileceğimizi anlatacağım.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
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