实验条件:
安装Visual Studio Code,并安装好Azure CLI Tools和Azure Resource Manager (ARM) Tools。
实验内容:
创建一个 Azure 资源管理器模板(ARM 模板),将其部署到 Azure,然后更新该 ARM 模板以添加参数和输出。
实验经过:
创建 ARM 模板
-
打开 Visual Studio Code 并创建名为 azuredeploy.json 的新文件。
-
Visual Studio Code ARM 模板扩展拥有配置的代码片段,可帮助你开发模板。 首先,让我们添加一个空白模板。 在文件的第一行上,输入 arm。
-
你将看到一个 IntelliSense 选项“arm!”。 通过选择该代码片段旁边的框来选择它。
-
现在,你的文件如下所示:
JSON复制
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "apiProfile": "", "parameters": {}, "variables": {}, "functions": [], "resources": [], "outputs": {} }
请注意,此文件拥有我们在上一单元中讨论过的 ARM 模板的所有部分。
-
保存对文件所做的更改。
将 ARM 模板部署到 Azure
若要将此模板部署到 Azure,你需要从 Visual Studio Code 终端登录到 Azure 帐户。 请确保安装了 Azure CLI 工具,并使用用于激活沙盒的相同帐户登录。
-
使用“终端”菜单打开终端窗口。
-
如果终端窗口右侧的下拉菜单显示“bash”,即表示你有了要使用的正确 shell,可以跳到下一节继续进行操作。
-
如果没有,请选择下拉列表,然后选择“选择默认 Shell”。
-
选择“bash”。
-
选择终端中的 +,以 bash 作为 shell 创建一个新的终端。
登录到 Azure
-
从 Visual Studio Code 中的终端运行此命令以登录到 Azure。 浏览器将打开,你可以登录到帐户。
Azure CLI复制
az login
-
登录后,将在终端中看到与帐户关联的订阅的列表。 如果激活了沙盒,会显示一个名为“Concierge 订阅”的沙盒。 在本练习的其余部分中使用此沙盒。
-
为在此会话中运行的所有 Azure CLI 命令设置默认订阅。
Azure CLI复制
az account set --subscription "Concierge Subscription"
备注
如果最近使用了多个沙盒,则可能会列出多个“Concierge 订阅”。 在这种情况下,使用下面两个步骤来设置默认订阅。 如果上述命令执行成功,则跳过下面两个步骤。
-
获取“Concierge 订阅”ID。
Azure CLI复制
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
-
使用订阅 ID 设置默认订阅。 将 {your subscription ID} 替换为最新的 Concierge 订阅 ID。
Azure CLI复制
az account set --subscription {your subscription ID}
设置默认资源组
将默认资源组设置为在沙盒环境中为你创建的资源组时,可在本练习的其余 Azure CLI 命令中忽略该参数。
Azure CLI复制
az configure --defaults group=[sandbox resource group name]
将模板部署到 Azure
以下代码将 ARM 模板部署到 Azure。 ARM 模板还没有任何资源,因此你不会看到创建的资源。 你会看到成功的部署。
在 Visual Studio Code 终端中使用 Azure CLI 命令部署模板。
Azure CLI复制
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="blanktemplate-"$today
az group deployment create \
--name $DeploymentName \
--template-file $templateFile
前面代码的顶部部分设置了 Azure CLI 变量,其中包括要部署的模板文件的路径和部署的名称。 az group deployment create
命令将模板部署到 Azure。 请注意,部署名称是 blanktemplate,后缀为一个日期。
你会在终端中看到 Running...
。
将 ARM 模板部署到 Azure 后,请转到 Azure 门户并确保你在沙盒订阅中。 为此,请选择页面右上角的头像。 选择“切换目录”。 在列表中,选择“Microsoft Learn 沙盒”目录。
-
在左侧面板上,选择“资源组”。
-
选择 [沙盒资源组名称]。
-
在“概述”中,你会看到一个成功的部署。
-
选择“1 个已成功”以查看部署的详细信息。
-
选择“blanktemplate”以查看部署了哪些资源。 在这种情况下,它将为空,因为尚未在模板中指定任何资源。
-
使页面在浏览器中处于打开状态。 你将再次检查部署。
向 ARM 模板添加资源
在上一个任务中,你了解了如何创建一个空白模板并部署它。 现在,可以开始部署实际资源了。 在此部分中,你将使用来自适用于 Visual Studio Code 的 Azure 资源管理器工具扩展的代码片段,将 Azure 存储帐户资源添加到 ARM 模板。
-
在 Visual Studio Code 中,将光标放在 azuredeploy.json 文件中资源块
"resources":[],
的方括号内。 -
在括号内输入“storage”。 此时将显示相关代码段的列表。 选择 arm-storage。
-
你的文件将如下所示:
JSON复制
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "functions": [], "variables": {}, "resources": [ { "name": "storageaccount1", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" } } ], "outputs": {} }
你应编辑的值突出显示在文件的新部分中,你可以使用 tab 键来浏览。
请注意,
tags:
和location:
属性已填充了。location:
属性使用函数将资源的位置设置为资源组的位置。 你将在下一个模块中了解标记和函数。 -
将资源 name: 和 displayName: 的值更改为唯一的值。 例如 learnexercise12321。 此名称在整个 Azure 中必须是唯一的,因此请选择对你来说是唯一的名称。
-
将 sku 的 name 的值从 Premium_LRS 更改为 Standard_LRS。 将 tier 的值更改为 Standard。 请注意,Visual Studio Code 会通过 IntelliSense 为你的属性值提供正确的选择。 删除默认值(包括引号)并键入引号以查看此工作。
-
资源的位置设置为资源组将部署在其中的位置。 保留默认值。
-
保存文件。
部署已更新的 ARM 模板
此处,你将更改部署的名称以更好地反映此部署的作用。
在终端中运行以下 Azure CLI 命令。 此代码片段与之前使用的代码相同,但部署的名称已更改。
Azure CLI复制
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addstorage-"$today
az group deployment create \
--name $DeploymentName \
--template-file $templateFile
检查你的部署
-
在浏览器中,返回到 Azure。 转到资源组,可以看到现在有“2 个已成功”的部署。 选择此链接。
-
请注意,此列表中包含了所有两个部署。
-
选择 addstorage。
-
请注意,存储帐户已部署。
参见原文:
向 Azure 资源管理器模板添加参数和输出
使用 ARM 模板功能部署到多个 Azure 环境
https://docs.microsoft.com/zh-cn/learn/modules/modify-azure-resource-manager-template-reuse/