Vad är ARM-mallar?What are ARM templates?

Med flytten till molnet har många team antagit smidiga utvecklings metoder.With the move to the cloud, many teams have adopted agile development methods. Dessa team itererar snabbt.These teams iterate quickly. De måste distribuera sina lösningar flera gånger till molnet och känna till att deras infrastruktur är i ett tillförlitligt tillstånd.They need to repeatedly deploy their solutions to the cloud, and know their infrastructure is in a reliable state. Eftersom infrastrukturen har blivit en del av den iterativa processen har indelningen mellan drift och utveckling försvunnit.As infrastructure has become part of the iterative process, the division between operations and development has disappeared. Team behöver hantera infrastruktur-och program kod genom en enhetlig process.Teams need to manage infrastructure and application code through a unified process.

För att möta dessa utmaningar kan du automatisera distributioner och använda infrastrukturen som kod.To meet these challenges, you can automate deployments and use the practice of infrastructure as code. I kod definierar du den infrastruktur som måste distribueras.In code, you define the infrastructure that needs to be deployed. Infrastruktur koden blir en del av projektet.The infrastructure code becomes part of your project. Precis som program kod, lagrar du infrastruktur koden i en käll lagrings plats och version.Just like application code, you store the infrastructure code in a source repository and version it. Vilken som helst av dina team kan köra koden och distribuera liknande miljöer.Any one on your team can run the code and deploy similar environments.

Använd Azure Resource Manager mallar (ARM-mallar) om du vill implementera infrastruktur som kod för dina Azure-lösningar.To implement infrastructure as code for your Azure solutions, use Azure Resource Manager templates (ARM templates). Mallen är en JavaScript Object Notation-fil (JSON) som definierar infrastrukturen och konfigurationen för ditt projekt.The template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. Mallen använder deklarativ syntax, som låter dig ange vad du vill distribuera utan att du behöver skriva sekvensen med programmeringskommandon för att skapa det.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. I mallen anger du de resurser som ska distribueras och egenskaperna för dessa resurser.In the template, you specify the resources to deploy and the properties for those resources.

Vi har introducerat ett nytt språk för att utveckla ARM-mallar.We've introduced a new language for developing ARM templates. Språket heter bicep och är för närvarande en för hands version.The language is named Bicep, and is currently in preview. Bicep-och JSON-mallar ger samma funktioner.Bicep and JSON templates offer the same capabilities. Du kan konvertera en mall mellan de två språken.You can convert template between the two languages. Bicep innehåller en syntax som är enklare att använda för att skapa mallar.Bicep provides a syntax that is easier to use for creating templates. Mer information finns i Vad är bicep (för hands version)?.For more information, see What is Bicep (Preview)?.

Mer information om hur du kan komma igång med ARM-mallar finns i följande video.To learn about how you can get started with ARM templates, see the following video.

Varför ska du välja ARM-mallar?Why choose ARM templates?

Om du försöker bestämma mellan att använda ARM-mallar och en annan infrastruktur som kod tjänster, bör du tänka på följande fördelar med att använda mallar: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:

  • Deklarativ syntax: arm-mallar gör att du kan skapa och distribuera en hel Azure-infrastruktur i en deklarativ miljö.Declarative syntax: ARM templates allow you to create and deploy an entire Azure infrastructure declaratively. Du kan till exempel distribuera inte bara virtuella datorer, utan även nätverks infrastrukturen, lagrings system och andra resurser som du kan behöva.For example, you can deploy not only virtual machines, but also the network infrastructure, storage systems and any other resources you may need.

  • Upprepnings bara resultat: Distribuera infrastrukturen flera gånger under utvecklings livs cykeln och få förtroende för att resurserna distribueras på ett konsekvent sätt.Repeatable results: Repeatedly deploy your infrastructure throughout the development lifecycle and have confidence your resources are deployed in a consistent manner. Mallarna är idempotenta, vilket innebär att du kan distribuera samma mall flera gånger och få samma resurs typer i samma tillstånd.Templates are idempotent, which means you can deploy the same template many times and get the same resource types in the same state. Du kan utveckla en mall som representerar det önskade läget, i stället för att utveckla många separata mallar som representerar uppdateringar.You can develop one template that represents the desired state, rather than developing lots of separate templates to represent updates.

  • Orchestration: du behöver inte bekymra dig om de komplexa funktionerna för beställning.Orchestration: You don't have to worry about the complexities of ordering operations. Resource Manager dirigerar distributionen av beroende resurser så att de skapas i rätt ordning.Resource Manager orchestrates the deployment of interdependent resources so they're created in the correct order. När så är möjligt distribuerar Resource Manager resurserna parallellt så att distributionerna slutar snabbare än seriella distributioner.When possible, Resource Manager deploys resources in parallel so your deployments finish faster than serial deployments. Du distribuerar mallen via ett kommando i stället för att använda flera tvingande kommandon.You deploy the template through one command, rather than through multiple imperative commands.

    Malldistribution jämförelse

  • Modulära filer: du kan dela upp dina mallar i mindre, återanvändbara komponenter och länka dem tillsammans vid distributions tiden.Modular files: You can break your templates into smaller, reusable components and link them together at deployment time. Du kan också kapsla en mall inuti en annan mall.You can also nest one template inside another templates.

  • Skapa en Azure-resurs: du kan använda nya Azure-tjänster och-funktioner direkt i mallar.Create any Azure resource: You can immediately use new Azure services and features in templates. Så snart en resurs leverantör inför nya resurser kan du distribuera dessa resurser via mallar.As soon as a resource provider introduces new resources, you can deploy those resources through templates. Du behöver inte vänta på att verktyg eller moduler uppdateras innan du använder de nya tjänsterna.You don't have to wait for tools or modules to be updated before using the new services.

  • Utöknings barhet: med distributions skriptkan du lägga till PowerShell-eller bash-skript i dina mallar.Extensibility: With deployment scripts, you can add PowerShell or Bash scripts to your templates. Distributions skripten utökar din möjlighet att konfigurera resurser under distributionen.The deployment scripts extend your ability to set up resources during deployment. Ett skript kan inkluderas i mallen eller lagras i en extern källa och refereras till i mallen.A script can be included in the template, or stored in an external source and referenced in the template. Distributions skript ger dig möjlighet att slutföra din miljö konfiguration från slut punkt till slut punkt i en enda ARM-mall.Deployment scripts give you the ability to complete your end-to-end environment setup in a single ARM template.

  • Testning: du kan se till att din mall följer rekommenderade rikt linjer genom att testa den med verktyget arm Template Tool Kit (arm-TTK).Testing: You can make sure your template follows recommended guidelines by testing it with the ARM template tool kit (arm-ttk). Det här test paketet är ett PowerShell-skript som du kan ladda ned från GitHub.This test kit is a PowerShell script that you can download from GitHub. Med verktygs paketet är det enklare för dig att utveckla expertis med hjälp av mallens språk.The tool kit makes it easier for you to develop expertise using the template language.

  • Förhandsgranska ändringar: du kan använda åtgärden vad händer om du vill få en förhands granskning av ändringarna innan du distribuerar mallen.Preview changes: You can use the what-if operation to get a preview of changes before deploying the template. Med vad som händer, kan du se vilka resurser som kommer att skapas, uppdateras eller tas bort och vilka resurs egenskaper som ska ändras.With what-if, you see which resources will be created, updated, or deleted, and any resource properties that will be changed. Konsekvens åtgärden kontrollerar miljöns aktuella tillstånd och eliminerar behovet av att hantera tillstånd.The what-if operation checks the current state of your environment and eliminates the need to manage state.

  • Inbyggd verifiering: din mall distribueras bara när du har överfört verifieringen.Built-in validation: Your template is deployed only after passing validation. Resource Manager kontrollerar mallen innan du påbörjar distributionen för att kontrol lera att distributionen kommer att lyckas.Resource Manager checks the template before starting the deployment to make sure the deployment will succeed. Distributionen är mindre troligt att stoppas i ett halv klart tillstånd.Your deployment is less likely to stop in a half-finished state.

  • Spårade distributioner: i Azure Portal kan du granska distributions historiken och få information om mall distributionen.Tracked deployments: In the Azure portal, you can review the deployment history and get information about the template deployment. Du kan se den mall som har distribuerats, de parameter värden som angavs i och eventuella värden.You can see the template that was deployed, the parameter values passed in, and any output values. Annan infrastruktur som kod tjänster spåras inte via portalen.Other infrastructure as code services aren't tracked through the portal.

    Distributions historik

  • Princip som kod: Azure policy är en princip som kod ramverk för att automatisera styrningen.Policy as code: Azure Policy is a policy as code framework to automate governance. Om du använder Azure-principer görs princip reparationer på icke-kompatibla resurser när de distribueras med hjälp av mallar.If you're using Azure policies, policy remediation is done on non-compliant resources when deployed through templates.

  • Distributions ritningar: du kan dra nytta av skisser som tillhandahålls av Microsoft för att uppfylla regler och efterlevnad.Deployment Blueprints: You can take advantage of Blueprints provided by Microsoft to meet regulatory and compliance standards. Dessa ritningar innehåller färdiga mallar för olika arkitekturer.These blueprints include pre-built templates for various architectures.

  • CI/CD-integrering: du kan integrera mallar i verktygen för kontinuerlig integrering och distribution (CI/CD), vilket kan automatisera dina versions pipeliner för snabba och tillförlitliga program-och infrastruktur uppdateringar.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. Genom att använda Azure-DevOps och Resource Manager-postmall kan du använda Azure-pipelines för att kontinuerligt bygga och distribuera ARM-mallar projekt.By using Azure DevOps and Resource Manager template task, you can use Azure Pipelines to continuously build and deploy ARM template projects. Mer information finns i vs Project with pipelines and självstudie: kontinuerlig integrering av Azure Resource Manager mallar med Azure-pipelines.To learn more, see VS project with pipelines and Tutorial: Continuous integration of Azure Resource Manager templates with Azure Pipelines.

  • Exporterad kod: du kan hämta en mall för en befintlig resurs grupp genom att antingen exportera det aktuella läget för resurs gruppen eller Visa mallen som används för en viss distribution.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. Att granska den exporterade mallen är ett bra sätt att lära sig mer om mallsyntaxen.Viewing the exported template is a helpful way to learn about the template syntax.

  • Redigerings verktyg: du kan skapa mallar med Visual Studio Code och verktyget mall-tillägg.Authoring tools: You can author templates with Visual Studio Code and the template tool extension. Du får IntelliSense, syntaxkontroll, direkt hjälp och många andra språk funktioner.You get intellisense, syntax highlighting, in-line help, and many other language functions. Förutom Visual Studio Code kan du också använda Visual Studio.In addition to Visual Studio Code, you can also use Visual Studio.

MallfilTemplate file

I mallen kan du skriva mallar som utökar funktionerna i JSON.Within your template, you can write template expressions that extend the capabilities of JSON. Dessa uttryck använder de funktioner som tillhandahålls av Resource Manager.These expressions make use of the functions provided by Resource Manager.

Mallen innehåller följande avsnitt:The template has the following sections:

  • Parametrar -ange värden under distributionen som tillåter att samma mall används med olika miljöer.Parameters - Provide values during deployment that allow the same template to be used with different environments.

  • Variabler – definiera värden som återanvänds i dina mallar.Variables - Define values that are reused in your templates. De kan konstrueras från parameter värden.They can be constructed from parameter values.

  • Användardefinierade funktioner – skapa anpassade funktioner som fören klar din mall.User-defined functions - Create customized functions that simplify your template.

  • Resurser – ange vilka resurser som ska distribueras.Resources - Specify the resources to deploy.

  • Utdata – returnera värden från de distribuerade resurserna.Outputs - Return values from the deployed resources.

Malldistribution processTemplate deployment process

När du distribuerar en mall konverterar Resource Manager mallen till REST API åtgärder.When you deploy a template, Resource Manager converts the template into REST API operations. Till exempel när Resource Manager tar emot en mall med följande resursdefinition:For example, when Resource Manager receives a template with the following resource definition:

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

Den konverterar definitionen till följande REST API-åtgärd, som skickas till resursprovidern Microsoft.Storage: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=2019-04-01
REQUEST BODY
{
  "location": "westus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Observera att API version som du anger i mallen för resursen används som API-version för rest-åtgärden.Notice that the apiVersion you set in the template for the resource is used as the API version for the REST operation. Du kan distribuera mallen flera gånger och vara säker på att den fortsätter att fungera.You can repeatedly deploy the template and have confidence it will continue to work. Genom att använda samma API-version behöver du inte bekymra dig om att bryta ändringar som kan införas i senare versioner.By using the same API version, you don't have to worry about breaking changes that might be introduced in later versions.

Använd något av följande alternativ om du vill distribuera en mall:To deploy a template, use any of the following options:

Mall designTemplate design

Det är helt upp till dig hur du definierar mallar och resursgrupper och hur du vill hantera din lösning.How you define templates and resource groups is entirely up to you and how you want to manage your solution. Du kan till exempel distribuera programmet i tre nivåer via en enda mall till en enda resursgrupp.For example, you can deploy your three tier application through a single template to a single resource group.

mall med tre nivåer

Du behöver dock inte definiera hela infrastrukturen i en enda mall.But, you don't have to define your entire infrastructure in a single template. Ofta är det praktiskt att dela in dina distributionskrav i en uppsättning riktade mallar för specifika ändamål.Often, it makes sense to divide your deployment requirements into a set of targeted, purpose-specific templates. Du kan enkelt återanvända dessa mallar för olika lösningar.You can easily reuse these templates for different solutions. Om du vill distribuera en viss lösning skapar du en huvud mall som länkar alla nödvändiga mallar.To deploy a particular solution, you create a main template that links all the required templates. Följande bild visar hur du distribuerar en lösning i tre nivåer via en överordnad mall som innehåller tre kapslade mallar.The following image shows how to deploy a three tier solution through a parent template that includes three nested templates.

mall med kapslad nivå

Om du tänker dig att dina nivåer har separata livscykler kan du distribuera dina tre nivåer till separata resursgrupper.If you envision your tiers having separate lifecycles, you can deploy your three tiers to separate resource groups. Observera att resurserna fortfarande kan länkas till resurser i andra resursgrupper.Notice the resources can still be linked to resources in other resource groups.

nivåmall

Mer information om kapslade mallar finns i Använda länkade mallar med Azure Resource Manager.For information about nested templates, see Using linked templates with Azure Resource Manager.

Dela mallarShare templates

När du har skapat mallen kanske du vill dela den med andra användare i din organisation.After creating your template, you may wish to share it with other users in your organization. Med specifikationer för mallar kan du lagra en mall som en resurs typ.Template specs enable you to store a template as a resource type. Du använder rollbaserad åtkomst kontroll för att hantera åtkomst till mallen specifikation. Användare med Läs behörighet till mallen specifikation kan distribuera den, men inte ändra mallen.You use role-based access control to manage access to the template spec. Users with read access to the template spec can deploy it, but not change the template.

Den här metoden innebär att du på ett säkert sätt kan dela mallar som uppfyller organisationens standarder.This approach means you can safely share templates that meet your organization's standards.

Nästa stegNext steps