如何在不更改现有sku的情况下部署azure ARM模板

如何在不更改现有sku的情况下部署azure ARM模板,azure,azure-resource-manager,Azure,Azure Resource Manager,我正在寻找一种方法来创建(而不是更新)PaaS sql server的SKU(当由ARM templat部署时),但是仍然希望部署模板中的所有其他更改 我有一个ARM模板,表示我当前的基础架构堆栈,它是作为CI的一部分部署的。 文件中指定的内容之一是我们的PaaS数据库的大小,例如: "sku": { "name": "BC_Gen4", "tier": "BusinessCritical", "family": "Gen4", "capacity": 2 } 由于临时

我正在寻找一种方法来创建(而不是更新)PaaS sql server的SKU(当由ARM templat部署时),但是仍然希望部署模板中的所有其他更改

我有一个ARM模板,表示我当前的基础架构堆栈,它是作为CI的一部分部署的。 文件中指定的内容之一是我们的PaaS数据库的大小,例如:

"sku": {
   "name": "BC_Gen4",
   "tier": "BusinessCritical",
   "family": "Gen4",
   "capacity": 2
}
由于临时的高工作负载,我将cpu的数量增加到4个(甚至8个)。是否有任何方法可以部署模板,使其不会强制将我的数据库缩小到指定的sku

resources.azure.com显示了与缩放相关的其他属性。 理想情况下,将其设置为类似“如果此资源不存在,则将其设置为X,否则使用现有的currentServiceObjectiveName/currentSku”

"kind": "v12.0,user,vcore",
"properties": {
  "currentServiceObjectiveName": "BC_Gen4_2",
  "requestedServiceObjectiveName": "BC_Gen4_2",
  "currentSku": {
    "name": "BC_Gen4",
    "tier": "BusinessCritical",
    "family": "Gen4",
    "capacity": 2
  }
}

目前,我们的基础架构是通过VSTS Azure资源组部署V2进行部署的。*在“创建或更新资源组,完成”模式下。

这在arm模板中是不可能的,您必须使用外部源来做出决定,而不是arm模板。而且,您无法在arm模板中真正提取数据,因此您可能需要从外部提取SKU并将其传递给模板

我的想法是,您可能能够使用
引用(xx,xx,'full')
提取当前SKU,但您需要一个嵌套的模板(我相信)使其工作“引用函数从运行时状态派生其值,因此不能在变量部分中使用。它可以用于模板或链接模板的输出部分。它不能用于嵌套模板的“输出”部分。若要返回嵌套模板中已部署资源的值,请将嵌套模板转换为链接模板。“--。感谢@4c74356b41,使用引用函数可能是一种前进的方式(使用链接模板)。是的,如果没有它们,您将无法做到这一点