ARM şablonları nelerdir?

Buluta geçişle birlikte birçok ekip çevik geliştirme yöntemlerini benimsemiştir. Bu ekipler, süreçleri hızla yinelemektedir. Ekiplerin çözümlerini tekrar tekrar buluta dağıtmaları ve altyapılarının güvenilir bir durumda olduğundan emin olmaları şarttır. Altyapı yinelemeli sürecin bir parçası haline geldikçe operasyonlar ve geliştirme arasındaki bölünme ortadan kalkmıştır. Ekiplerin birleşik bir süreç aracılığıyla altyapı ve uygulama kodunu yönetmesi gerekir.

Bu zorlukların üstesinden gelmek için dağıtımları otomatikleştirebilir ve kod olarak altyapı yöntemini kullanabilirsiniz. Kodda dağıtılması gereken altyapıyı tanımlarsınız. Altyapı kodu projenizin bir parçası olur. Uygulama kodunda olduğu gibi altyapı kodunu da bir kaynak depoda depolar ve sürümü oluşturursunuz. Ekibinizdeki herkes kodu çalıştırabilir ve benzer ortamlar dağıtabilir.

Azure çözümlerinize kod olarak altyapı uygulamak için Azure Resource Manager şablonlarını (ARM şablonları) kullanın. Şablon, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon, dağıtmak istediğiniz öğeyi oluşturmaya yönelik programlama komutları dizisini yazmak zorunda kalmadan bu öğeyi belirtmenize imkan tanıyan bildirim temelli söz dizimini kullanır. Şablonda, dağıtılacak kaynakları ve bu kaynakların özelliklerini belirtirsiniz.

İpucu

ARM şablonlarıyla aynı özellikleri sunan ancak kullanımı daha kolay bir söz dizimine sahip Bicep adlı yeni bir dil ekledik. Her Bicep dosyası dağıtım sırasında otomatik olarak arm şablonuna dönüştürülür. Altyapıyı kod seçenekleri olarak düşünüyorsanız Bicep'e bakmanızı öneririz. Daha fazla bilgi için bkz. Bicep nedir?.

ARM şablonlarını kullanmaya nasıl başlayabileceğinizi öğrenmek için aşağıdaki videoya bakın.

ARM şablonlarını neden seçmelisiniz?

ARM şablonlarını ve kod hizmeti olarak diğer altyapılardan birini kullanmaya karar vermeye çalışıyorsanız, şablonları kullanmanın aşağıdaki avantajlarını göz önünde bulundurun:

  • Bildirim temelli söz dizimi: ARM şablonları, azure altyapısının tamamını bildirim temelli olarak oluşturmanıza ve dağıtmanıza olanak sağlar. Örneğin, yalnızca sanal makineleri değil, ağ altyapısını, depolama sistemlerini ve ihtiyacınız olabilecek diğer kaynakları da dağıtabilirsiniz.

  • Tekrarlanabilir sonuçlar: Altyapınızı geliştirme yaşam döngüsü boyunca tekrar tekrar dağıtın ve kaynaklarınızın tutarlı bir şekilde dağıtıldığından güvenin. Şablonlar bir kez etkili olur; bu da aynı şablonu birçok kez dağıtabileceğiniz ve aynı durumdaki aynı kaynak türlerini alabileceğiniz anlamına gelir. Güncelleştirmeleri temsil eden çok sayıda ayrı şablon geliştirmek yerine istenen durumu temsil eden bir şablon geliştirebilirsiniz.

  • Düzenleme: Sipariş işlemlerinin karmaşıklıkları konusunda endişelenmeniz gerekmez. Resource Manager, birbirine bağlı kaynakların doğru sırada oluşturulması için dağıtımını düzenler. Mümkün olduğunda, Resource Manager dağıtımlarınızın seri dağıtımlardan daha hızlı bitmesi için kaynakları paralel olarak dağıtır. Şablonu birden çok kesinlik temelli komut yerine tek bir komutla dağıtırsınız.

    Kesinlik temelli ve bildirim temelli dağıtım arasındaki farkı gösteren diyagram.

  • Modüler dosyalar: Şablonlarınızı daha küçük, yeniden kullanılabilir bileşenlere bölebilir ve dağıtım zamanında birbirine bağlayabilirsiniz. Ayrıca bir şablonu başka bir şablonun içine yerleştirebilirsiniz.

  • Herhangi bir Azure kaynağı oluşturma: Şablonlardaki yeni Azure hizmetlerini ve özelliklerini hemen kullanabilirsiniz. Bir kaynak sağlayıcısı yeni kaynaklar tanıttığı anda, bu kaynakları şablonlar aracılığıyla dağıtabilirsiniz. Yeni hizmetleri kullanmadan önce araçların veya modüllerin güncelleştirilmesini beklemeniz gerekmez.

  • Genişletilebilirlik: Dağıtım betikleriyle şablonlarınıza PowerShell veya Bash betikleri ekleyebilirsiniz. Dağıtım betikleri, dağıtım sırasında kaynak ayarlama yeteneğinizi genişletir. Betik şablona eklenebilir veya bir dış kaynakta depolanabilir ve şablonda başvurulabilir. Dağıtım betikleri, uçtan uca ortam kurulumunuzu tek bir ARM şablonunda tamamlamanızı sağlar.

  • Test: Şablonunuzu ARM şablon araç seti (arm-ttk) ile test ederek önerilen yönergelere uyduğundan emin olabilirsiniz. Bu test seti, GitHub'dan indirebileceğiniz bir PowerShell betiğidir. Araç seti, şablon dilini kullanarak uzmanlık geliştirmenizi kolaylaştırır.

  • Değişiklikleri önizleme: Şablonu dağıtmadan önce değişikliklerin önizlemesini almak için durum işlemini kullanabilirsiniz. Durum ile, hangi kaynakların oluşturulacağını, güncelleştirileceğini veya silineceğini ve değiştirilecek kaynak özelliklerini görürsünüz. What-if işlemi ortamınızın geçerli durumunu denetler ve durumu yönetme gereksinimini ortadan kaldırır.

  • Yerleşik doğrulama: Şablonunuz yalnızca doğrulama geçirildikten sonra dağıtılır. Resource Manager, dağıtımı başlatmadan önce şablonu denetler ve dağıtımın başarılı olduğundan emin olur. Dağıtımınızın yarım tamamlanmış durumda durma olasılığı daha düşüktür.

  • İzlenen dağıtımlar: Azure portal dağıtım geçmişini gözden geçirebilir ve şablon dağıtımı hakkında bilgi alabilirsiniz. Dağıtılan şablonu, geçirilen parametre değerlerini ve tüm çıkış değerlerini görebilirsiniz. Kod hizmetleri olarak diğer altyapı portal üzerinden izlenmez.

    Dağıtım geçmişini gösteren Azure portal ekran görüntüsü.

  • Kod olarak ilke: Azure İlkesi, idareyi otomatikleştirmek için bir kod çerçevesi olarak ilkedir. Azure ilkelerini kullanıyorsanız, ilke düzeltmesi şablonlar aracılığıyla dağıtıldığında uyumlu olmayan kaynaklarda gerçekleştirilir.

  • Dağıtım Şemaları: Mevzuat ve uyumluluk standartlarını karşılamak için Microsoft tarafından sağlanan Blueprints'lerden yararlanabilirsiniz. Bu şemalar çeşitli mimariler için önceden oluşturulmuş şablonlar içerir.

  • CI/CD tümleştirmesi: Şablonları, hızlı ve güvenilir uygulama ve altyapı güncelleştirmeleri için yayın işlem hatlarınızı otomatik hale getirebilen sürekli tümleştirme ve sürekli dağıtım (CI/CD) araçlarınızla tümleştirebilirsiniz. Azure DevOps ve Resource Manager şablon görevini kullanarak, ARM şablon projelerini sürekli olarak derlemek ve dağıtmak için Azure Pipelines'ı kullanabilirsiniz. Daha fazla bilgi edinmek için bkz. İşlem hatları ile VS projesi ve Öğretici: Azure Resource Manager şablonlarının Azure Pipelines ile sürekli tümleştirilmesi.

  • Dışarı aktarılabilir kod: Kaynak grubunun geçerli durumunu dışarı aktararak veya belirli bir dağıtım için kullanılan şablonu görüntüleyerek mevcut bir kaynak grubu için şablon alabilirsiniz. Dışarı aktarılan şablonu görüntülemek şablon söz dizimi hakkında bilgi edinmek için yararlı bir yoldur.

  • Yazma araçları: Visual Studio Code ve şablon aracı uzantısıyla şablonlar yazabilirsiniz. IntelliSense, söz dizimi vurgulama, satır içi yardım ve diğer birçok dil işlevine sahip olursunuz. Visual Studio Code ek olarak Visual Studio'yu da kullanabilirsiniz.

Şablon dosyası

Şablonunuzun içinde, JSON'un özelliklerini genişleten şablon ifadeleri yazabilirsiniz. Bu ifadeler, Resource Manager tarafından sağlanan işlevleri kullanır.

Şablon aşağıdaki bölümlere sahiptir:

  • Parametreler - Dağıtım sırasında aynı şablonun farklı ortamlarla kullanılmasına izin veren değerler sağlayın.

  • Değişkenler - Şablonlarınızda yeniden kullanılan değerleri tanımlayın. Bunlar parametre değerlerinden oluşturulabilir.

  • Kullanıcı tanımlı işlevler - Şablonunuzu basitleştiren özelleştirilmiş işlevler oluşturun.

  • Kaynaklar - Dağıtılacak kaynakları belirtin.

  • Çıkışlar - Dağıtılan kaynaklardan değer döndürür.

Şablon dağıtım işlemi

Bir şablon dağıttığınızda, Resource Manager şablonu REST API işlemlerine dönüştürür. Örneğin, Resource Manager aşağıdaki kaynak tanımına sahip bir şablonu aldığında:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "mystorageaccount",
    "location": "centralus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2"
  },
]

Tanımı aşağıdaki REST API işlemine dönüştürerek Microsoft.Storage kaynak sağlayıcısına gönderir:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
  "location": "centralus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Kaynak için şablonda ayarladığınız apiVersion'ın REST işlemi için API sürümü olarak kullanıldığına dikkat edin. Şablonu tekrar tekrar dağıtabilir ve çalışmaya devam edeceğinden güvenebilirsiniz. Aynı API sürümünü kullandığınızda, sonraki sürümlerde kullanıma sunulacak değişiklikleri bozma konusunda endişelenmeniz gerekmez.

Şablon dağıtmak için aşağıdaki seçeneklerden birini kullanın:

Şablon tasarımı

Şablonları ve kaynak gruplarını tanımlama şekli tamamen size ve çözümünüzü yönetme biçiminize bağlıdır. Örneğin, üç katmanlı uygulamanızı tek bir şablondan tek bir kaynak grubuna dağıtabilirsiniz.

Tek bir şablon kullanarak üç katmanlı uygulama dağıtımlarını gösteren diyagram.

Ancak, bütün altyapınızı tek bir şablonda tanımlamak zorunda değilsiniz. Genellikle, en uygun seçenek dağıtım gereksinimlerinizi hedeflenen, amaca yönelik bir dizi şablona bölüştürmektir. Bu şablonları farklı çözümler için kolayca yeniden kullanabilirsiniz. Belirli bir çözümü dağıtmak için tüm gerekli şablonları bağlayan bir ana şablon oluşturursunuz. Aşağıdaki görüntüde üç katmanlı çözümün iç içe üç şablon içeren ana şablon aracılığıyla nasıl dağıtıldığı gösterilmektedir.

İç içe şablonları kullanan üç katmanlı uygulama dağıtımlarını gösteren diyagram.

Katmanlarınızın farklı yaşam döngülerine sahip olacağını düşünüyorsanız, üç katmanı farklı kaynak gruplarına dağıtabilirsiniz. Kaynaklar diğer kaynak gruplarındaki kaynaklara bağlanmaya devam edebilir.

Ayrı kaynak gruplarıyla üç katmanlı uygulama dağıtımlarını gösteren diyagram.

İç içe geçmiş şablonlar hakkında daha fazla bilgi için bkz. Azure Resource Manager ile bağlı şablonları kullanma.

Şablonları paylaşma

Şablonunuzu oluşturduktan sonra kuruluşunuzdaki diğer kullanıcılarla paylaşmak isteyebilirsiniz. Şablon belirtimleri , bir şablonu kaynak türü olarak depolamanızı sağlar. Şablon belirtimlerine erişimi yönetmek için rol tabanlı erişim denetimini kullanırsınız. Şablon belirtimlerine okuma erişimi olan kullanıcılar şablonu dağıtabilir ancak şablonu değiştiremez.

Bu yaklaşım, kuruluşunuzun standartlarını karşılayan şablonları güvenle paylaşabileceğiniz anlamına gelir.

Sonraki adımlar