ARM 模板中的预定义资源组



我正在研究一个自定义手臂模板。

我想在 JSON 中对特定的资源组进行硬编码,以便 打开模板时,它将模拟"资源组:使用现有:预定义的选定资源组">

我已经挠头几个小时并深入搜索了网络,我还尝试导出现有资源组模板并将其导入自定义部署,但它仍然显示

资源组 *新建 *使用现有资源组

有没有办法在 JSON 模板中定义现有的 RG?

可以使用嵌套模板,如@4c74356b41所述,但仍会在门户中看到丑陋的"选择资源组"字段。

我有一个类似的问题(即使@4c74356b41一再声称它没有任何意义)。我想从参数生成资源组名称。

可在此处找到有关如何使用嵌套模板的详细信息:创建资源组并部署资源

{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"someName": {
"type": "string"
}
},
"variables": {
"rgName": "[concat('rg-', parameters('someName'))]"
},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2018-05-01",
"location": "[parameters('rgLocation')]",
"name": "[variables('rgName')]",
"properties": {}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2018-05-01",
"name": "rgDeployment",
"resourceGroup": "[variables('rgName')]",
"dependsOn": [
"[resourceId('Microsoft.Resources/resourceGroups/', variables('rgName'))]"
],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
// PUT YOUR RESOURCES TEMPLATES HERE! //
}
],
"outputs": {}
}
}
}
],
"outputs": {}
}

只需将rgName变量替换为实际资源组名称的名称即可。

有几种方法可以实现这一点(不是说它有意义,但你可以这样做)。

  1. 围绕模板使用自动化以始终将其部署到同一 rg。 这是最有意义的,因为您的模板保持灵活
  2. 使用父模板包装模板(因此将模板"转换"为嵌套模板)。 这样,父模板就可以控制将嵌套模板部署到哪个资源组(查找跨资源组 ARM 模板部署)。
  3. 使模板成为嵌套的内联模板(最坏的情况)。 这与第 2 点几乎相同,但更糟,因为嵌套内联模板有一个特殊的缺点,即无法使用自己的参数\变量,只能使用父模板中定义的参数\变量。

同样,这些都没有意义,因为应将其部署到正确的订阅\资源组组合。 但是,如果你坚持的话,你有它。

但门户体验将保持不变(无法解决此问题,可以强制模板始终部署到同一资源组(没有任何意义),但不能更改门户体验),如果这是你关心的。

最新更新