用于为不同环境创建资源的 Azure 资源管理器模板

Azure Resource Manager template to create resources for different environments

我正在尝试创建一个 ARM 模板,以便我可以将一个 Azure 订阅中已存在的所有资源创建到另一个新订阅中。例如,如果我在测试环境中有一些东西,我想在不同的环境中创建新资源以便我能够在之后部署代码。但是,我对 Azure、powershell 和 ARM 模板还很陌生,因此,我正在寻找有关从哪里开始以及如何实现这一目标的指导。

  1. 我已经阅读了有关 powershell 的内容。
  2. 我知道如何将资源从一个资源组移动到另一个甚至不同的 Azure 订阅。

你可以看看 Azure Citadel 自定进度 ARM template lab

所以通常您会创建一个 ARM 模板来执行此操作。当您需要为它更改 add\remove 资源时,您可以将它部署到不同的环境。这类似于您如何跨环境推广您的应用程序。首先你将它部署到开发,测试它。然后部署它进行测试并进行更严格的测试,也许是性能测试。然后将其部署到生产环境。

如果您正在寻找示例,here's the official examples repo. The official docs might help as well

Azure 资源管理器模板是将资源自动部署到 ARM 的首选方式。了解如何使用 Resource Manager 模板和 Azure PowerShell 部署资源,可以参考这个官方document.

要部署到订阅,请使用 New-AzDeployment:

New-AzDeployment -Location <location> -TemplateFile <path-to-template>

如果你想用 azure devops 部署 Azure 资源管理器模板,你可以参考这些(blog, blog)。 devops 的概念之一是自动化,如果你不想每次都通过门户手动重新创建你的环境,这是一个很好的尝试。

如果您真的想从 ARM 模板开始,您需要参数化模板中的所有值 azuredeploy.json 并使用您需要在环境之间更改的参数构建参数文件 azuredeploy.parameters.json如名称、位置、sku/size 等

不过,如果您是新手,我建议您直接使用 Azure CLI。它简单、易于重复,您可以通过几个命令部署整个解决方案。这将创建一个资源组,SQL 具有数据库的逻辑服务器和具有 Web 应用程序的应用程序服务计划。

开发

az group create --name "rg-d-01" --location "australiaeast"
az appservice plan create --name "asp-d-01" --resource-group "rg-d-01" --location "australiaeast" --sku "S1"
az webapp create --name "awa-d-01" --plan "asp-d-01" --resource-group "rg-d-01"
az sql server create --name "sql-d-01" --resource-group "rg-d-01" --location "australiaeast"
az sql db create --server "sql-d-01" --resource-group "rg-d-01" --name "sqldb-d-01" --service-objective S0

测试

az group create --name "rg-t-01" --location "australiaeast"
az appservice plan create --name "asp-t-01" --resource-group "rg-t-01" --location "australiaeast" --sku "S1"
az webapp create --name "awa-t-01" --plan "awhp-t-01" --resource-group "rg-t-01"
az sql server create --name "sql-t-01" --resource-group "rg-t-01" --location "australiaeast"
az sql db create --server "sql-t-01" --resource-group "rg-t-01" --name "sqldb-t-01" --service-objective S0

产品

az group create --name "rg-p-01" --location "australiaeast"
az appservice plan create --name "asp-p-01" --resource-group "rg-p-01" --location "australiaeast" --sku "S1"
az webapp create --name "awa-p-01" --plan "awhp-p-01" --resource-group "rg-p-01"
az sql server create --name "sql-p-01" --resource-group "rg-p-01" --location "australiaeast"
az sql db create --server "sql-p-01" --resource-group "rg-p-01" --name "sqldb-p-01" --service-objective S0