ARM şablonlarınıza koşullu mantık ekleme
Belirli koşullar altında, isteğe bağlı olarak bir kaynak dağıtmanız gerekebilir. Sanal makineye yük dengeleyici eklemek yaygın örneklerden biridir. Bir e-ticaret sitenizin olduğunu ve sitenin büyük indirim dönemlerdeki trafik artışlarına dayanabileceğinden emin olmak istediğinizi düşünelim. Yük dengeleyici, bir sanal makine ile ilişkilendirebileceğiniz kaynak türlerinden biridir. Bir kuralı koşullu olarak ekleyerek ilgili sanal makineye uygulanacak yük dengeleyicinin etkinleştirilmesini veya devre dışı bırakılmasını sağlayabilirsiniz.
Aşağıdaki durumları hayal edin:
- Önceden var olan kaynaklar. Şablonda bir kaynak belirtip daha sonra bunu dağıttığınızda iki durumdan birisi gerçekleşir. Kaynak dağıtılır veya mevcutsa dağıtılmaz. Kaynağın var olup olmadığını denetlemek, Azure Resource Manager'ın sizin adınıza gerçekleştirdiği bir işlemdir ve örtük olarak gerçekleşir. Burada amaç, bu mekanizmayı kendi avantajınıza kullanarak bir nesnenin önceden var olup olmadığını nasıl denetleyebileceğinizi belirlemektir.
- Dallanma mantığı. Bir şablona dağıtım zamanında geçirdiğiniz parametrelere bağlı olarak farklı kaynaklar dağıtmak isteyebilirsiniz. İfade ettiğiniz durumlar, dallanma mantığı olarak bilinir. Parametrenin belirli türde bir değeri varsa ilk dalı seçin. Belirli türde bir değeri yoksa dağıtım için ikinci veya üçüncü dalı seçin. Dallanma mantığı bu şekilde devam eder.
Yukarıdaki durumların ikisi de koşullu mantığın uygulandığı senaryoları temsil eder. Mantık, Resource Manager sisteminde bulunur veya açıkça belirtmeniz gerekir.
Koşullu dağıtım
yapısı, condition
bir şeyin dağıtılmasını isteyip istemediğinizi ifade etmenizi sağlar. Bu, bir kaynak öğesine eklediğiniz true
veya false
değerine sahip bir özelliktir. Genellikle şablonunuzda aşağıdaki JSON'a benzer bir condition
yapı bulursunuz:
"resources" : [
{
"condition": "[parameters('shouldDeploy')]"
}
]
Yukarıdaki JSON kodunda bir kaynağa condition
özelliği eklenir. Özelliğin değeri, shouldDeploy
parametresinin değeri olacak şekilde değerlendirilir.
Değerlendirme
Yapıyı değerlendirmenin condition
iki yolu vardır. Bu iki yöntemi bilmek, koşullu mantığınızı ifade etme şeklinizi etkileyebilir. Bu iki farklı yöntem şunlardır:
Değer true veya false olacaktır. Örneğin, aşağıdaki yapıyı düşünün:
"condition": "[parameters('deployAccount')]"
deployAccount
değeri, değeri dağıtım zamanında geçirilebilecek veya varsayılan değere dönebilecek bir parametredir. Kullanılan yaklaşımdan bağımsız olarak değer mutlaka false veya true olur. Boole harici bir değer atama girişimi hataya neden olur.Değerlendirildiğinde true/false sonucunu veren bir ifade vardır. Burada
condition
yapısına kesin true/false değeri atamak yerineequals(arg1, arg2)
adlı yerleşik şablon işlevini kullanırsınız.arg1
, işlevin true sonucunu vermesi içinarg2
ile eşit olmalıdır.condition
yapınız şu şekilde ifade edilebilir:"condition": "[equals(parameters('newOrExisting'),'new')]"
equals()
işlevini kullandığınızda, bir parametreye geçirdiğiniz değerin artıktrue
veyafalse
olması gerekmez. Bunun,equals()
işlevindeki ikinci bağımsız değişkenle eşleşmesi gerekir. Yukarıdaki JSON örneğinde işlevintrue
olarak değerlendirilmesi içinnewOrExisting
parametresinin değerininnew
dizesiyle eşleşmesi gerekir.