本文解答了有關(guān)Azure資源管理器模板(ARM模板)的常見問題。
入門
·什么是ARM模板,為什么要使用它們?
ARM模板是JSON文件,可在其中定義要部署到Azure的內(nèi)容。模板可幫助你實(shí)現(xiàn)Azure的基礎(chǔ)結(jié)構(gòu)即代碼解決方案。組織可以重復(fù)并可靠地將所需基礎(chǔ)結(jié)構(gòu)部署到不同的環(huán)境。
若要詳細(xì)了解ARM模板如何幫助管理Azure基礎(chǔ)結(jié)構(gòu),請(qǐng)參閱什么是ARM模板?
·如何開始使用模板?
若要簡(jiǎn)化ARM模板的創(chuàng)作,需要合適的工具。我們建議安裝Visual Studio Code和Azure資源管理器工具擴(kuò)展。有關(guān)這些工具的快速介紹,請(qǐng)參閱快速入門:使用Visual Studio Code創(chuàng)建ARM模板。
準(zhǔn)備好學(xué)習(xí)如何創(chuàng)建ARM模板時(shí),請(qǐng)開始學(xué)習(xí)有關(guān)ARM模板的初學(xué)者教程系列。這些教程指導(dǎo)你逐步完成構(gòu)造ARM模板的過程。你將了解模板的不同部分以及它們的協(xié)作方式。此內(nèi)容也作為Microsoft Learn模塊提供。
·我應(yīng)使用ARM模板還是Terraform部署到Azure?
可使用你最喜歡的選項(xiàng)。這兩項(xiàng)服務(wù)都可幫助你自動(dòng)部署到Azure。
我們認(rèn)為,使用ARM模板比使用其他基礎(chǔ)結(jié)構(gòu)即代碼服務(wù)更加有益。若要了解這些優(yōu)勢(shì),請(qǐng)參閱為什么選擇ARM模板?
Build 2020
·我錯(cuò)過了Microsoft Build 2020的演示文稿。演示文稿是否可供查看?
是的,請(qǐng)隨時(shí)觀看。
·在哪里可以獲得有關(guān)在Build發(fā)布的新功能的詳細(xì)信息?
有關(guān)正在使用的功能的一般信息,請(qǐng)加入我們的Azure顧問部署Yammer組。
若要了解有關(guān)新模板語言的信息,請(qǐng)注冊(cè)通知。
若要了解有關(guān)模板規(guī)格的信息,請(qǐng)參閱Azure資源管理器模板規(guī)格(預(yù)覽版)。
創(chuàng)建和測(cè)試模板
·在哪里可以了解ARM模板的最佳做法?
有關(guān)實(shí)現(xiàn)模板的建議,請(qǐng)參閱ARM模板的最佳做法。創(chuàng)建模板后,運(yùn)行ARM測(cè)試工具包。它檢查模板是否符合建議的做法。
·我已通過門戶設(shè)置我的環(huán)境。是否有某種方法可從現(xiàn)有資源組獲取模板?
是的,你可以從資源組導(dǎo)出模板。導(dǎo)出的模板是了解模板的良好起點(diǎn),但你可能想要在將其用于生產(chǎn)環(huán)境之前對(duì)其進(jìn)行修訂。
導(dǎo)出模板時(shí),可以選擇要包含在模板中的資源。
·是否可以在ARM模板中創(chuàng)建資源組并向其部署資源?
是的,當(dāng)你在Azure訂閱級(jí)別部署模板時(shí),可以在模板中創(chuàng)建資源組。有關(guān)創(chuàng)建資源組和部署資源的示例,請(qǐng)參閱資源組和資源。
·是否可以在ARM模板中創(chuàng)建訂閱?
是的,有關(guān)詳細(xì)信息,請(qǐng)參閱以編程方式創(chuàng)建具有最新api的Azure訂閱。
·如何在部署模板之前對(duì)其進(jìn)行測(cè)試?
建議在部署模板之前,在其上運(yùn)行ARM測(cè)試工具包和what-if操作。測(cè)試工具包將檢查模板是否使用最佳做法。它在識(shí)別到可改進(jìn)模板實(shí)現(xiàn)方式的更改時(shí)提供警告。
What-if操作顯示模板對(duì)環(huán)境所做的更改。在部署之前,可以看到意外的更改。What-if操作還會(huì)返回預(yù)檢驗(yàn)證期間可以檢測(cè)到的任何錯(cuò)誤。例如,如果模板中包含語法錯(cuò)誤,則會(huì)返回該錯(cuò)誤。它還會(huì)返回任何可以確定已部署資源的最終狀態(tài)的錯(cuò)誤。例如,如果模板使用已在使用中的名稱部署存儲(chǔ)帳戶,What-if操作會(huì)返回該錯(cuò)誤。
·在哪里可以找到可用于每種資源類型的屬性的相關(guān)信息?
VS Code提供了用于處理資源屬性的Intellisense。還可以查看屬性和說明的模板參考。
·我需要?jiǎng)?chuàng)建一個(gè)資源類型的多個(gè)實(shí)例。如何在我的模板中創(chuàng)建迭代器?
使用copy元素指定多個(gè)實(shí)例。還可以將copy用于資源、屬性、變量和輸出。
模板語言
·我聽說你正在研究一種新的模板語言。在哪里可以找到有關(guān)它的詳細(xì)信息?
若要預(yù)覽新語言,請(qǐng)參閱Bicep項(xiàng)目存儲(chǔ)庫。若要隨時(shí)了解新語言,請(qǐng)注冊(cè)獲取通知。
·是否有支持在YAML中創(chuàng)建模板的計(jì)劃?
目前沒有支持YAML的計(jì)劃。我們相信,新模板語言將提供比YAML或JSON更易于使用的解決方案。
·發(fā)布新模板語言后,是否仍可以使用JSON編寫模板?
是的,你可以繼續(xù)使用JSON模板。
·是否會(huì)提供將我的JSON模板轉(zhuǎn)換為新模板語言的工具?
是的。
模板規(guī)格
·如何開始模板規(guī)范的預(yù)覽版本?
安裝最新版本的PowerShell或Azure CLI。對(duì)于Azure PowerShell,請(qǐng)使用版本5.0.0或更高版本。對(duì)于Azure CLI,請(qǐng)使用版本2.14.2或更高版本。
·模板規(guī)格和Azure藍(lán)圖有何關(guān)系?
Azure藍(lán)圖通過將blueprint definition資源替換為template spec資源在其實(shí)現(xiàn)中使用模板規(guī)格。我們將提供遷移路徑,將藍(lán)圖定義轉(zhuǎn)換為模板規(guī)范,但仍支持藍(lán)圖定義Api。沒有對(duì)blueprint assignment資源進(jìn)行更改。藍(lán)圖仍是在Azure中構(gòu)建受治理環(huán)境的用戶體驗(yàn)。
·模板規(guī)格是否會(huì)替換鏈接模板?
不會(huì),但模板規(guī)格設(shè)計(jì)為可與鏈接模板一起使用。在部署父模板之前,無需將鏈接模板移動(dòng)到可公開訪問的終結(jié)點(diǎn)。而是在創(chuàng)建模板規(guī)格時(shí),將父模板及其項(xiàng)目打包在一起。
·是否可以跨訂閱共享模板規(guī)格?
可以,只要用戶具有對(duì)模板規(guī)格的讀取訪問權(quán)限,就可以跨訂閱使用它們。不能跨租戶使用模板規(guī)格。
模板中的腳本
·是否可以在模板中包含腳本來執(zhí)行模板中無法執(zhí)行的任務(wù)?
可以,請(qǐng)使用部署腳本??稍谀0逯邪珹zure PowerShell或Azure CLI腳本。此功能以預(yù)覽版提供。
·是否仍可使用自定義腳本擴(kuò)展和Desired State Configuration(DSC)?
這些選項(xiàng)仍可用且未發(fā)生更改。部署腳本旨在執(zhí)行與VM來賓無關(guān)的操作。如果需要在VM中的主機(jī)操作系統(tǒng)上運(yùn)行腳本,則自定義腳本擴(kuò)展和/或DSC將是更好的選擇。但部署腳本具有一些優(yōu)勢(shì),例如可設(shè)置超時(shí)持續(xù)時(shí)間。
·Azure政府版是否支持部署腳本?
支持,你可以使用US Gov亞利桑那州和US Gov弗吉尼亞州中的部署腳本。
在部署前預(yù)覽更改
·是否可以預(yù)覽部署模板之前將發(fā)生的更改?
可以,使用what-if功能。它會(huì)評(píng)估環(huán)境的當(dāng)前狀態(tài),并將其與部署后存在的狀態(tài)進(jìn)行比較。你可以檢查匯總的更改,以確保模板沒有任何意外的結(jié)果。
·可以同時(shí)在增量模式和完全模式下使用what-if功能嗎?
可以,兩種部署模式均受支持。有關(guān)使用增量模式的示例,請(qǐng)參閱運(yùn)行what-if操作。有關(guān)使用完全模式的示例,請(qǐng)參閱確認(rèn)刪除。
·What-if是否適用于鏈接模板?
適用,what-if可評(píng)估父模板及其鏈接模板的狀態(tài)。
·是否可以在Azure管道中使用what-if?
可以,你可以使用what-if來驗(yàn)證管道是否應(yīng)繼續(xù)。
·使用what-if時(shí),我看到了不屬于模板的屬性更改。這是預(yù)期的“干擾信息”嗎?
我們正在努力減少干擾信息。請(qǐng)?jiān)诖颂幍腉itHub存儲(chǔ)庫中提交問題,以幫助我們改進(jìn):https://aka.ms/WhatIfIssues
模板可視化工具
·是否有辦法可視化ARM模板及其資源?
我們有一個(gè)社區(qū)提供的VS Code擴(kuò)展,它可以很好地可視化ARM模板。該擴(kuò)展顯示了要部署的資源以及它們之間的關(guān)系。
·是否可以在VS Code之外使用模板可視化工具?
可在門戶中預(yù)覽模板可視化工具。有關(guān)詳細(xì)信息,請(qǐng)觀看此Build的簡(jiǎn)短會(huì)話。
部署限制
·在單個(gè)部署操作中可以部署多少個(gè)資源組?
過去,此限額為五個(gè)資源組。最近已增加到800個(gè)資源組。有關(guān)詳細(xì)信息,請(qǐng)參閱在訂閱級(jí)別創(chuàng)建資源組和資源。
在部署歷史記錄中,我遇到關(guān)于限額為800個(gè)部署的錯(cuò)誤。
我們正在更改資源組部署歷史記錄的維護(hù)方式。過去,必須手動(dòng)從此歷史記錄中刪除部署才能避免此錯(cuò)誤。從2020年6月開始,我們將在你接近限額時(shí)自動(dòng)從歷史記錄中刪除部署。有關(guān)詳細(xì)信息,請(qǐng)參閱從部署歷史記錄中自動(dòng)刪除。
從歷史記錄中刪除部署不會(huì)影響已部署的資源。
模板和DevOps
·是否可以將ARM模板集成到Azure Pipelines中?
是的。有關(guān)如何使用模板和管道的說明,請(qǐng)參閱教程:使用Azure Pipelines持續(xù)集成arm模板并將arm模板與Azure Pipelines集成。
·是否可以使用GitHub操作來部署模板?
是,請(qǐng)參閱使用GitHub操作部署ARM模板。