ARM şablonları nelerdir?What are ARM templates?

Buluta geçiş sayesinde, birçok ekip çevik geliştirme yöntemlerini benimsemiştir.With the move to the cloud, many teams have adopted agile development methods. Bu takımlar hızla yineleyebilir.These teams iterate quickly. Çözümlerini buluta sürekli olarak dağıtmaları ve altyapısının güvenilir bir durumda olduğunu bilmeniz gerekir.They need to repeatedly deploy their solutions to the cloud, and know their infrastructure is in a reliable state. Altyapı yinelemeli işlemin bir parçası haline geldiği için, işlemler ve geliştirme arasındaki bölme kayboldu.As infrastructure has become part of the iterative process, the division between operations and development has disappeared. Ekiplerin, Birleşik bir işlem aracılığıyla altyapıyı ve uygulama kodunu yönetmesi gerekir.Teams need to manage infrastructure and application code through a unified process.

Bu güçlükleri karşılamak için dağıtımları otomatik hale getirebilir ve kod olarak altyapı uygulamasını kullanabilirsiniz.To meet these challenges, you can automate deployments and use the practice of infrastructure as code. Kodda, dağıtılması gereken altyapıyı tanımlarsınız.In code, you define the infrastructure that needs to be deployed. Altyapı kodu projenizin bir parçası haline gelir.The infrastructure code becomes part of your project. Uygulama kodu gibi, altyapı kodunu bir kaynak deposunda depolar ve sürümü.Just like application code, you store the infrastructure code in a source repository and version it. Takımınızda herhangi biri kodu çalıştırabilir ve benzer ortamları dağıtabilir.Any one on your team can run the code and deploy similar environments.

Altyapıyı Azure çözümleriniz için kod olarak uygulamak üzere Azure Resource Manager (ARM) şablonları kullanın.To implement infrastructure as code for your Azure solutions, use Azure Resource Manager (ARM) templates. Şablon, projeniz için altyapıyı ve yapılandırmayı tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır.The template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. Şablon bildirim temelli sözdizimini kullanır, bu, oluşturmak için programlama komutlarının dizisini yazmak zorunda kalmadan ne dağıtmayı istediğinizi belirtmenize olanak tanır.The template uses declarative syntax, which lets you state what you intend to deploy without having to write the sequence of programming commands to create it. Şablonda, dağıtılacak kaynakları ve bu kaynakların özelliklerini belirtirsiniz.In the template, you specify the resources to deploy and the properties for those resources.

ARM şablonlarını neden seçmelisiniz?Why choose ARM templates?

ARM şablonlarını kullanma ve kod hizmetleri olarak diğer altyapılardan biri arasında seçim yapmaya çalışıyorsanız, şablonları kullanmanın aşağıdaki avantajlarını göz önünde bulundurun:If you're trying to decide between using ARM templates and one of the other infrastructure as code services, consider the following advantages of using templates:

  • Bildirime dayalı sözdizimi: ARM şablonları, tüm Azure altyapısını bildirimli olarak oluşturmanıza ve dağıtmanıza olanak tanır.Declarative syntax: ARM templates allow you to create and deploy an entire Azure infrastructure declaratively. Örneğin, yalnızca sanal makineler, aynı zamanda ağ altyapısı, depolama sistemleri ve ihtiyacınız olabilecek diğer kaynaklar için dağıtım yapabilirsiniz.For example, you can deploy not only virtual machines, but also the network infrastructure, storage systems and any other resources you may need.

  • Tekrarlanabilir sonuçlar: altyapınızı geliştirme yaşam döngüsü boyunca sürekli olarak dağıtın ve kaynaklarınızın tutarlı bir şekilde dağıtılmasını sağlayabilirsiniz.Repeatable results: Repeatedly deploy your infrastructure throughout the development lifecycle and have confidence your resources are deployed in a consistent manner. Şablonlar, aynı şablonu birçok kez dağıtabileceğiniz ve aynı durumda aynı kaynak türlerini alabileceği anlamına gelen ıdempotent.Templates are idempotent, which means you can deploy the same template many times and get the same resource types in the same state. Güncelleştirmeleri temsil etmek için çok sayıda ayrı şablon geliştirmek yerine istenen durumu temsil eden bir şablon geliştirebilirsiniz.You can develop one template that represents the desired state, rather than developing lots of separate templates to represent updates.

  • Orchestration: sıralama işlemlerinin karmaşıklıkları hakkında endişelenmeniz gerekmez.Orchestration: You don't have to worry about the complexities of ordering operations. Kaynak Yöneticisi, birbirine bağlı kaynakların dağıtımını doğru sırada oluşturulacak şekilde düzenler.Resource Manager orchestrates the deployment of interdependent resources so they're created in the correct order. Mümkün olduğunda, dağıtımlarınızın seri dağıtımlardan daha hızlı tamamlanabilmesi için Kaynak Yöneticisi Kaynakları paralel olarak dağıtır.When possible, Resource Manager deploys resources in parallel so your deployments finish faster than serial deployments. Şablonu, birden çok zorunlu komut yerine bir komut aracılığıyla dağıtırsınız.You deploy the template through one command, rather than through multiple imperative commands.

    Şablon dağıtımı karşılaştırma

  • 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.Modular files: You can break your templates into smaller, reusable components and link them together at deployment time. Ayrıca, bir şablonu başka bir şablon içinde iç içe geçirebilirsiniz.You can also nest one template inside another templates.

  • Herhangi bir Azure kaynağı oluşturun: şablonlarda yeni Azure hizmetlerini ve özelliklerini hemen kullanabilirsiniz.Create any Azure resource: You can immediately use new Azure services and features in templates. Kaynak sağlayıcısı yeni kaynakları kullanıma sunarak, bu kaynakları şablonlar aracılığıyla dağıtabilirsiniz.As soon as a resource provider introduces new resources, you can deploy those resources through templates. Yeni hizmetleri kullanmadan önce araçların veya modüllerin güncelleştirilmesini beklemeniz gerekmez.You don't have to wait for tools or modules to be updated before using the new services.

  • Genişletilebilirlik: dağıtım betikleriile şablonlarınıza PowerShell veya bash betikleri ekleyebilirsiniz.Extensibility: With deployment scripts, you can add PowerShell or Bash scripts to your templates. Dağıtım betikleri, dağıtım sırasında kaynakları ayarlama yeteneğinizi genişletmenizi sağlar.The deployment scripts extend your ability to set up resources during deployment. Bir betik, şablona dahil edilebilir veya bir dış kaynakta depolanabilir ve şablonda başvurulur.A script can be included in the template, or stored in an external source and referenced in the template. Dağıtım betikleri, uçtan uca ortam kurulumunuzu tek bir ARM şablonunda tamamlamanıza olanak sağlar.Deployment scripts give you the ability to complete your end-to-end environment setup in a single ARM template.

  • Test etme: Bu şablonu ARM şablon aracı seti (ARM-TTK) ile test ederek, şablonunuzun önerilen kurallara uyduğundan emin olabilirsiniz.Testing: You can make sure your template follows recommended guidelines by testing it with the ARM template tool kit (arm-ttk). Bu test kiti, GitHub'dan indirebileceğiniz bir PowerShell betiğine sahiptir.This test kit is a PowerShell script that you can download from GitHub. Araç seti, şablon dilini kullanarak uzmanlık geliştirmenizi kolaylaştırır.The tool kit makes it easier for you to develop expertise using the template language.

  • Değişiklikleri Önizle: şablonu dağıtmadan önce değişikliklerin önizlemesini almak için ne yapılır işlemini kullanabilirsiniz.Preview changes: You can use the what-if operation to get a preview of changes before deploying the template. Hangi kaynakların oluşturulacağını, güncelleştirileceğini veya silineceğini ve değiştirecek kaynak özelliklerini görürsünüz.With what-if, you see which resources will be created, updated, or deleted, and any resource properties that will change. Durum işlemi ortamınızın geçerli durumunu denetler ve durumu yönetme ihtiyacını ortadan kaldırır.The what-if operation checks the current state of your environment and eliminates the need to manage state.

  • Yerleşik doğrulama: şablonunuz yalnızca doğrulama işlemi yapıldıktan sonra dağıtılır.Built-in validation: Your template is deployed only after passing validation. Kaynak Yöneticisi dağıtımın başarılı olduğundan emin olmak için dağıtımı başlatmadan önce şablonu denetler.Resource Manager checks the template before starting the deployment to make sure the deployment will succeed. Dağıtımınız, yarı tamamlanmış bir durumda durmak daha az olabilir.Your deployment is less likely to stop in a half-finished state.

  • İ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.Tracked deployments: In the Azure portal, you can review the deployment history and get information about the template deployment. Dağıtılan şablonu, geçirilen parametre değerlerini ve tüm çıktı değerlerini görebilirsiniz.You can see the template that was deployed, the parameter values passed in, and any output values. Kod hizmetleri olarak diğer altyapı Portal üzerinden izlenmez.Other infrastructure as code services aren't tracked through the portal.

    Dağıtım geçmişi

  • Kod olarak ilke: Azure ilkesi , idare otomatikleştiren kod çerçevesi olarak bir ilkedir.Policy as code: Azure Policy is a policy as code framework to automate governance. Azure ilkeleri kullanıyorsanız, ilke düzeltme, şablonlar aracılığıyla dağıtıldığında uyumlu olmayan kaynaklar üzerinde yapılır.If you're using Azure policies, policy remediation is done on non-compliant resources when deployed through templates.

  • Dağıtım planları: Microsoft tarafından, mevzuat ve uyumluluk standartlarını karşılamak için sunulan planların avantajlarından yararlanabilirsiniz.Deployment Blueprints: You can take advantage of Blueprints provided by Microsoft to meet regulatory and compliance standards. Bu planlar, çeşitli mimarilere yönelik önceden oluşturulmuş şablonlar içerir.These blueprints include pre-built templates for various architectures.

  • CI/CD tümleştirmesi: şablonları, sürekli tümleştirme ve sürekli DAĞıTıM (CI/CD) araçlarınızla tümleştirebilir. Bu, hızlı ve güvenilir uygulama ve altyapı güncelleştirmelerine yönelik yayın işlem hatlarınızı otomatikleştirebilirler.CI/CD integration: You can integrate templates into your continuous integration and continuous deployment (CI/CD) tools, which can automate your release pipelines for fast and reliable application and infrastructure updates. Azure DevOps ve Kaynak Yöneticisi şablon görevi kullanarak, ARM şablon projelerini sürekli olarak derlemek ve dağıtmak için Azure Pipelines kullanabilirsiniz.By using Azure DevOps and Resource Manager template task, you can use Azure Pipelines to continuously build and deploy ARM template projects. Daha fazla bilgi edinmek için bkz. işlem hatları ve öğretici Ile vs projesi : Azure Pipelines Azure Resource Manager şablonlarının sürekli tümleştirilmesi.To learn more, see VS project with pipelines and Tutorial: Continuous integration of Azure Resource Manager templates with Azure Pipelines.

  • 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 kaynak grubu için bir şablon alabilirsiniz.Exportable code: You can get a template for an existing resource group by either exporting the current state of the resource group, or viewing the template used for a particular deployment. Dışarı aktarılan şablonu görüntülemek şablon söz dizimi hakkında bilgi edinmek için yararlı bir yoldur.Viewing the exported template is a helpful way to learn about the template syntax.

  • Yazma araçları: şablonları Visual Studio Code ve şablon aracı uzantısıyla yazabilirsiniz.Authoring tools: You can author templates with Visual Studio Code and the template tool extension. IntelliSense, sözdizimi vurgulama, çevrimiçi Yardım ve diğer birçok dil işlevini edinirsiniz.You get intellisense, syntax highlighting, in-line help, and many other language functions. Visual Studio Code ' a ek olarak, Visual Studio 'yuda kullanabilirsiniz.In addition to Visual Studio code, you can also use Visual Studio.

Şablon dosyasıTemplate file

Şablonunuzda, JSON özelliklerini genişleten şablon ifadeleri yazabilirsiniz.Within your template, you can write template expressions that extend the capabilities of JSON. Bu ifadeler Kaynak Yöneticisi tarafından sunulan işlevleri kullanır.These expressions make use of the functions provided by Resource Manager.

Şablon aşağıdaki bölümlere sahiptir:The template has the following sections:

  • Parametreler -dağıtım sırasında, aynı şablonun farklı ortamlarla kullanılmasına izin veren değerler sağlar.Parameters - Provide values during deployment that allow the same template to be used with different environments.

  • Değişkenler -şablonlarınız için yeniden kullanılan değerleri tanımlayın.Variables - Define values that are reused in your templates. Parametre değerlerinden oluşturulabilirler.They can be constructed from parameter values.

  • Kullanıcı tanımlı işlevler -şablonunuzu basitleştiren özelleştirilmiş işlevler oluşturun.User-defined functions - Create customized functions that simplify your template.

  • Kaynaklar -dağıtılacak kaynakları belirtin.Resources - Specify the resources to deploy.

  • Çıktılar -dağıtılan kaynaklardan değer döndürür.Outputs - Return values from the deployed resources.

Şablon dağıtımı işlemiTemplate deployment process

Bir şablonu dağıtırken Kaynak Yöneticisi şablonu REST API işlemlerine dönüştürür.When you deploy a template, Resource Manager converts the template into REST API operations. Örneğin, Resource Manager aşağıdaki kaynak tanımına sahip bir şablonu aldığında:For example, when Resource Manager receives a template with the following resource definition:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2016-01-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Tanımı aşağıdaki REST API işlemine dönüştürerek Microsoft.Storage kaynak sağlayıcısına gönderir:It converts the definition to the following REST API operation, which is sent to the Microsoft.Storage resource provider:

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

Şablon tasarımıTemplate design

Şablonları ve kaynak gruplarını tanımlama şekli tamamen size ve çözümünüzü yönetme biçiminize bağlıdır.How you define templates and resource groups is entirely up to you and how you want to manage your solution. Örneğin, üç katmanlı uygulamanızı tek bir şablondan tek bir kaynak grubuna dağıtabilirsiniz.For example, you can deploy your three tier application through a single template to a single resource group.

üç katmanlı şablon

Ancak, bütün altyapınızı tek bir şablonda tanımlamak zorunda değilsiniz.But, you don't have to define your entire infrastructure in a single template. Genellikle, en uygun seçenek dağıtım gereksinimlerinizi hedeflenen, amaca yönelik bir dizi şablona bölüştürmektir.Often, it makes sense to divide your deployment requirements into a set of targeted, purpose-specific templates. Bu şablonları farklı çözümler için kolayca yeniden kullanabilirsiniz.You can easily reuse these templates for different solutions. Belirli bir çözümü dağıtmak için gerekli tüm şablonların bağlandığı bir ana şablon oluşturun.To deploy a particular solution, you create a master template that links all the required templates. 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.The following image shows how to deploy a three tier solution through a parent template that includes three nested templates.

iç içe geçmiş şablon

Katmanlarınızın farklı yaşam döngülerine sahip olacağını düşünüyorsanız, üç katmanı farklı kaynak gruplarına dağıtabilirsiniz.If you envision your tiers having separate lifecycles, you can deploy your three tiers to separate resource groups. Kaynaklar diğer kaynak gruplarındaki kaynaklara bağlanmaya devam edebilir.Notice the resources can still be linked to resources in other resource groups.

katman şablonu

İç içe geçmiş şablonlar hakkında daha fazla bilgi için bkz. Azure Resource Manager ile bağlı şablonları kullanma.For information about nested templates, see Using linked templates with Azure Resource Manager.

Sonraki adımlarNext steps