Modülleri kullanarak ilgili kaynakları gruplandırma

Tamamlandı

Son ürün lansmanları için Bicep şablonlarını kullanmaya başladınız ve başarılı oldular. Kaynaklarınızı bir şablon dosyasında bildirdiğiniz için, Kaynakları Azure portalında el ile yapılandırmanıza gerek kalmadan yeni oyuncak başlatmaları için kaynakları hızla dağıtabilirsiniz.

BT yöneticisi, Bicep kodunuzun daha karmaşık hale geldiğini ve tanımlanan kaynak sayısının arttığını görebilir. Bu nedenle kodu daha modüler hale getirip oluşturabileceğinizi sordu. Dağıtımınızın farklı bölümleri için modüller olarak adlandırılan tek tek Bicep dosyaları oluşturabilirsiniz. Ana Bicep şablonu bu modüllere başvurabilir. Arka planda modüller dağıtım için tek bir JSON şablonuna dönüştürülür.

Modüller ayrıca Bicep kodunu daha da yeniden kullanılabilir hale getirmenin bir yoludur. Diğer birçok Bicep şablonunun kullandığı tek bir Bicep modülüne sahip olabilirsiniz.

Ayrıca genellikle Bicep modüllerinden ve şablonlarından çıkışlar yaymanız gerekir. Çıkışlar, Bicep kodunuzun dağıtımı başlatan kişiye veya her ne olursa olsun verileri geri göndermesinin bir yoludur. Önce çıkışlara bakalım.

Dekont

Bu ünitedeki komutlar kavramları göstermek için gösterilir. Komutları henüz çalıştırmayın. Burada öğrendiklerini yakında öğreneceksin.

Çıkışlar

Bicep şablonları bir insan tarafından el ile dağıtılabilir veya bir tür otomatik sürüm işlemi tarafından dağıtılabilir. Her iki durumda da, şablon dağıtımını yürüten kişiye veya herhangi bir öğeye göndermeniz gereken şablondan bazı verilerin olması yaygın bir durumdur.

Şablon dağıtımından bilgi almanız gerekebilecek bazı örnek senaryolar aşağıda verilmiştir:

  • Sanal makine dağıtan bir Bicep şablonu oluşturursunuz ve makinede SSH oluşturabilmek için genel IP adresini almanız gerekir.
  • Ortam adı ve uygulama adı gibi bir dizi parametreyi kabul eden bir Bicep şablonu oluşturursunuz. Şablon, dağıttığı Azure Uygulaması Service uygulamasını adlandırmak için bir ifade kullanır. Uygulama ikili dosyalarını yayımlamak için bir dağıtım işlem hattı içinde kullanabilmek için şablonun dağıttığını uygulamanın adının çıktısını almanız gerekir.

Bu senaryolar için çıkışları kullanabilirsiniz. Bicep şablonunda çıkış tanımlamak için aşağıdaki gibi anahtar sözcüğünü kullanın output :

output appServiceAppName string = appServiceAppName

Çıkış tanımı birkaç önemli parça içerir:

  • output anahtar sözcüğü, Bicep'e bir çıkış tanımladığınızı söyler.
  • appServiceAppName çıktının adıdır. Birisi şablonu başarıyla dağıttığında, çıkış değerleri belirttiğiniz adı içerir, böylece beklediğiniz değerlere erişebilir.
  • string çıkış türüdür. Bicep çıkışları parametrelerle aynı türleri destekler.
  • Her çıkış için bir değer belirtilmelidir. Parametrelerden farklı olarak, çıkışların her zaman değerleri olmalıdır. Çıkış değerleri ifadeler, parametrelere veya değişkenlere başvurular ya da dosya içinde dağıtılan kaynakların özellikleri olabilir.

Bahşiş

Çıkışlar, değişkenler ve parametrelerle aynı adları kullanabilir. Bu kural, şablonunuzun kaynakları içinde kullanmak üzere bir değişken içinde karmaşık bir ifade oluşturursanız ve değişkenin değerini çıkış olarak kullanıma sunmanız gerekiyorsa yararlı olabilir.

Bir çıktının başka bir örneği aşağıda verilmişti. Bunun değeri, bir genel IP adresi kaynağının tam etki alanı adına (FQDN) ayarlanır.

output ipFqdn string = publicIPAddress.properties.dnsSettings.fqdn

Bahşiş

Kaynakların nasıl davranacağı hakkında varsayımlar yapmak yerine çıkış olarak kaynak özelliklerini kullanmayı deneyin. Örneğin, App Service uygulamasının URL'si için bir çıktınız olması gerekiyorsa, URL için kendiniz bir dize oluşturmak yerine uygulamanın defaultHostName özelliğini kullanın. Bazen bu varsayımlar farklı ortamlarda geçerli değildir veya kaynağın çalışma şekli değişir, bu nedenle kaynağın size kendi özelliklerini söylemesini sağlamak daha güvenlidir.

Dikkat

bağlantı dizesi veya anahtarlar gibi gizli dizi değerleri için çıkışlar oluşturmayın. Kaynak grubunuz için erişimi olan herkes şablonlardan gelen çıktıları okuyabilir. Daha sonraki bir modülde ele alacağımız gizli kaynak özelliklerine erişmek için kullanabileceğiniz başka yaklaşımlar da vardır.

Modül tanımlama

Bicep modülleri, şablonda oluşturulabilecek daha küçük birimler oluşturarak Bicep kodunuzu düzenlemenize ve yeniden kullanmanıza olanak sağlar. Herhangi bir Bicep şablonu başka bir şablon tarafından modül olarak kullanılabilir. Bu öğrenme modülü boyunca Bicep şablonları oluşturdunuz. Bu, Zaten Bicep modülleri olarak kullanılabilecek dosyalar oluşturduğunuz anlamına gelir!

A çözümü için uygulama, veritabanı ve ağ kaynaklarını dağıtan bir Bicep şablonunuz olduğunu düşünün. Bu şablonu, her biri kendi kaynak kümesine odaklanmış üç modüle bölebilirsiniz. Bonus olarak, modülleri diğer çözümler için de diğer şablonlardaki yeniden kullanabilirsiniz; bu nedenle, A çözümüne benzer ağ gereksinimleri olan B çözümü için bir şablon geliştirirken ağ modülünü yeniden kullanabilirsiniz.

Diagram that shows a template for solution A referencing three modules: application, database, and networking. The networking module is then reused in another template for solution B.

Şablonun bir modül dosyasına başvuru içermesini istediğinizde anahtar sözcüğünü module kullanın. Modül tanımı kaynak bildirimine benzer, ancak kaynak türü ve API sürümü eklemek yerine modülün dosya adını kullanırsınız:

module myModule 'modules/mymodule.bicep' = {
  name: 'MyModule'
  params: {
    location: location
  }
}

Şimdi bu modül tanımının bazı önemli bölümlerine yakından bakalım:

  • module anahtar sözcüğü, Bicep'e modül olarak başka bir Bicep dosyası kullanmak üzere olduğunuzu bildirir.
  • Kaynaklar gibi modüller de gibi myModulesembolik bir ada ihtiyaç duyar. Şablonun diğer bölümlerinde modülün çıkışlarına başvurarak sembolik adı kullanacaksınız.
  • modules/mymodule.bicep , şablon dosyasına göre modül dosyasının yoludur. Unutmayın, modül dosyası yalnızca normal bir Bicep dosyasıdır.
  • Kaynaklar gibi özellik name de zorunludur. Azure, şablon dosyasındaki her modül için ayrı bir dağıtım oluşturduğundan modül adını kullanır. Bu dağıtımlar, bunları tanımlamak için kullanabileceğiniz adlara sahiptir.
  • anahtar sözcüğünü kullanarak modülün herhangi bir parametresiniparams belirtebilirsiniz. Şablondaki her parametrenin değerlerini ayarladığınızda, ifadeleri, şablon parametrelerini, değişkenleri, şablon içinde dağıtılan kaynakların özelliklerini ve diğer modüllerden çıkışları kullanabilirsiniz. Bicep, kaynaklar arasındaki bağımlılıkları otomatik olarak anlar.

Modüller ve çıkışlar

Şablonlarda olduğu gibi Bicep modülleri de çıkışları tanımlayabilir. Modülleri bir şablon içinde birbirine zincirleme yaygın olarak kullanılır. Bu durumda, bir modülün çıkışı başka bir modül için bir parametre olabilir. Modülleri ve çıkışları birlikte kullanarak güçlü ve yeniden kullanılabilir Bicep dosyaları oluşturabilirsiniz.

Modüllerinizi tasarlama

İyi bir Bicep modülü bazı temel ilkeleri izler:

  • Modülün net bir amacı olmalıdır. Çözümünüzün belirli bir bölümüyle ilgili tüm kaynakları tanımlamak için modülleri kullanabilirsiniz. Örneğin, uygulamanızı izlemek için kullanılan tüm kaynakları içeren bir modül oluşturabilirsiniz. Tüm veritabanı sunucularınız ve veritabanlarınız gibi birbirine ait olan bir kaynak kümesini tanımlamak için de bir modül kullanabilirsiniz.

  • Her kaynağı kendi modülüne yerleştirmeyin. Dağıttığınız her kaynak için ayrı bir modül oluşturmamalısınız. Çok sayıda karmaşık özelliğe sahip bir kaynağınız varsa, bu kaynağı kendi modülüne koymak mantıklı olabilir, ancak genel olarak modüllerin birden çok kaynağı birleştirmesi daha iyidir.

  • Bir modülün anlaşılır parametreleri ve çıkışları olmalıdır. Modülün amacını göz önünde bulundurun. Modülün parametre değerlerini işlemesi mi yoksa üst şablonun bunu işlemesi ve ardından modüle tek bir değer geçirmesi gerekip gerekmediğini düşünün. Benzer şekilde, bir modülün döndürmesi gereken çıkışları düşünün ve modülü kullanacak şablonlar için yararlı olduklarından emin olun.

  • Bir modülün mümkün olduğunca bağımsız olması gerekir. Modülün bir bölümünü tanımlamak için bir değişken kullanması gerekiyorsa, değişkenin genellikle üst şablon yerine modül dosyasına dahil edilmesi gerekir.

  • Bir modül gizli dizileri çıkarmamalıdır. Şablonlar gibi, bağlantı dizesi veya anahtarlar gibi gizli dizi değerleri için modül çıkışları oluşturmayın.