Şablon işlevlerini kullanarak Azure Resource Manager şablonunuza esneklik kazandırma

Tamamlandı

Bu senaryoda Azure Resource Manager (ARM) şablonunuzu farklı ortamlara dağıtma sürecini mümkün olduğunca kolaylaştırmak istiyorsunuz. Burada sorunla karşılaşabileceğiniz noktalardan biri, Azure depolama hesabı için benzersiz bir ad belirlemek.

Bu sorunu çözmek için ARM şablonu işlevlerini kullanarak bir ifade oluşturmaya karar verdiniz.

ARM şablonu işlevleri nedir?

ARM şablonu işlevleri, dağıtım sırasında gerekli değerleri dinamik olarak alır ve ARM şablonunuza esneklik kazandırır.

İşlevleri anlamak için öncelikle ifadeleri anlamanız gerekir. İfadeler, şablon dağıtıldığında değerlendirilen değerlerdir. Köşeli ayraçlarla başlayıp biter ve []dize, tamsayı, Boole, dizi veya nesne döndürebilirler.

Bu öğrenme yolundaki önceki modülde, Resource Manager şablonunuzdaki ifadelerle zaten çalıştınız. Örneğin, şunları kullandınız:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

İfade, defaultValue: özniteliğinin değeridir. Bu ifadenin resourceGroup() ARM şablonu işlevini içerdiğine dikkat edin. Bu işlev, bu şablonun dağıtıldığı kaynak grubu hakkındaki bilgileri döndürür. .location, bu işlev tarafından döndürülen nesneden bir özellik alır. İşlevler, ihtiyacınız olan değerleri dinamik olarak oluşturmanızı sağlar.

ARM şablonu işlevleriyle nasıl çalışılır?

İşlevlerle çalışırken izlenecek birkaç kural vardır:

  • Bir işleve dize değeri geçirdiğinizde tek tırnak işaretleri kullanın. Aşağıda bir örnek verilmiştir: concat('storage',uniqueString(resourceGroup().id)). işlevi , concatişlevine geçirdiğiniz dize ise şeklindedir 'storage'.

  • Şablon işlevlerinde değişmez değerlerle çalışmak için kaçış karakteri kullanmanız gerekir. Kaçış karakteri, kullandığınız değere göre farklılık gösterir.

  • Bir özelliği null olarak ayarlamak için null veya [json('null')] kullanabilirsiniz. JSON işlevi, parametre olarak null sağladığınızda boş bir nesne döndürür.

    "stringValue": null,
    "objectValue": "[json('null')]"
    

Resource Manager, sizin için birkaç ARM şablonu işlevi sunar. İşlevler, türlerine göre gruplar halinde listelenir:

  • Dizi işlevleri, dizilerle çalışmanızı sağlar. Örneğin, first ve last.
  • Karşılaştırma işlevleri, şablonlarınızda karşılaştırma yapmanızı sağlar. Örneğin, equals ve greater.
  • Tarih işlevleri, tarihlerle çalışmanızı sağlar. Örneğin, utcNow ve dateTimeAdd.
  • Dağıtım değeri işlevleri, şablonun belirli bölümlerindeki değerleri ve dağıtımla ilgili değerleri almanızı sağlar. Örneğin, environment ve parameters.
  • Mantıksal işlevler, mantıksal koşullarla çalışmanızı sağlar. Örneğin, if ve not.
  • Sayısal işlevler, tamsayılarla çalışmanızı sağlar. Örneğin, max ve mod.
  • Nesne işlevleri, nesnelerle çalışmanızı sağlar. Örneğin, contains ve length.
  • Kaynak işlevleri, kaynak değerlerini almanızı sağlar. Örneğin, resourceGroup ve subscription.
  • Dize işlevleri, dizelerle çalışmanızı sağlar. Örneğin, length ve startsWith.

Bir ifadede birkaç işlev birden nasıl kullanılır?

Birkaç şablon işlevini birlikte kullanarak kendi ifadelerinizi oluşturabilirsiniz. Bu senaryoda bir ön ek girişi ile kaynak grubu kimliğinin karmasını birleştirerek her kaynak grubu için benzersiz ad oluşturan bir ifade oluşturmanız gerekir. Bu ifade, dev2hu6fktr577wh ve staging5his8hgr67tt5 gibi depolama hesabı adlarıyla sonuçlanır. Bu dize değerini oluşturmak için dört işlev kullanabilirsiniz. Örneğin:

"[toLower(concat('Storage',uniqueString(resourceGroup().id)))]"

Bu ifadeyi inceleyelim.

Concat ile başlayarak, bu işlev herhangi bir sayıda bağımsız değişken alır ve parametreler için dizeleri veya dizileri kabul edebilir. Burada "Storage" değişmez değerini kullanıp bir diğer işlev olan uniqueString işlevinin sonucunu ekliyorsunuz. uniqueString işlevi, parametrelere göre belirlenimci bir karma dize oluşturuyor. Bu ifadede, bir diğer işlev olan resourceGroup işlevini kullanarak geçerli kaynak grubu kimliğinin karmasını oluşturuyorsunuz.

Şu ana kadar ele aldığımız çıktı aşağıdadır:

Büyük ve küçük harfleri içeren bir 13 karakterlik karma ile Depolama sözcüğü birleştirilerek oluşturulan bir dizenin resmi.

Adlandırma kurallarına uymak için bu dizenin tamamının küçük harften oluşması gerekir. Burada dış işlev olarak toLower işlevini ekliyorsunuz.

Sonuçta elde ettiğiniz dize şöyle oluyor:

Depolama sözcüğünü 13 karakterlik karma ile birleştirip tüm harfleri küçük harfe dönüştürerek oluşturulan dizenin resmi.