ARM şablonlarınıza koşullu mantık ekleme

Tamamlandı

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 yerine equals(arg1, arg2) adlı yerleşik şablon işlevini kullanırsınız. arg1, işlevin true sonucunu vermesi için arg2 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ık true veya false olması gerekmez. Bunun, equals() işlevindeki ikinci bağımsız değişkenle eşleşmesi gerekir. Yukarıdaki JSON örneğinde işlevin true olarak değerlendirilmesi için newOrExisting parametresinin değerinin new dizesiyle eşleşmesi gerekir.