如何在语句中使用使用的参考资源功能

问题描述 投票:0回答:1

我试图用参考发送私人IPS(CONCAT(变量(“NICNAME”),0))。ipConfigurations [0] .properties.privateIPAddress基于创建的VM数量custome分机,如果虚拟机的数量3.then 3个私人IPS应该传递给custome扩展,如果虚拟机的数量5.then 5个私有地址,应传递给custome extension.I定义了两个扩展,但其寻找depencies。

  "resources": [
    {
      "condition": "[equals(variables('numberOfVM'), 3)]",
      "name": "config-app-3",
      "type": "extensions",
      "location": "[parameters('location')]",
      "apiVersion": "2015-06-15",
      "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 0))]",
          "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 1))]",
          "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 2))]"
       ],
      "tags": {
        "displayName": "config-app"
      },
      "properties": {
        "publisher": "Microsoft.Azure.Extensions",
        "type": "CustomScript",
        "typeHandlerVersion": "2.0",
        "autoUpgradeMinorVersion": true,
        "protectedSettings": {
          "commandToExecute": "[concat('sh /home/centos/install_apache.sh \',' ','--ip-address \' ,reference(concat(variables('nicName'), 0)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 1)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 2)).ipConfigurations[0].properties.privateIPAddress)]"
        }
      }
    },
    {
      "condition": "[equals(variables('numberOfVM'), 5)]",
      "name": "config-app-5",
      "type": "extensions",
      "location": "[parameters('location')]",
      "apiVersion": "2015-06-15",
      "dependsOn": [
         "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 0))]",
         "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 1))]",
         "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 2))]",
         "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 3))]",
         "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'), 4))]",
       ],
      "tags": {
        "displayName": "config-app"
      },
      "properties": {
        "publisher": "Microsoft.Azure.Extensions",
        "type": "CustomScript",
        "typeHandlerVersion": "2.0",
        "autoUpgradeMinorVersion": true,
        "protectedSettings": {
          "commandToExecute": "[concat('sh /home/centos/install_apache.sh \',' ','--ip-address \' , reference(concat(variables('nicName'), 0)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 1)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 2)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 3)).ipConfigurations[0].properties.privateIPAddress,' ', reference(concat(variables('nicName'), 4)).ipConfigurations[0].properties.privateIPAddress)]"
        }
      }
    }
  ]

我收到以下错误,同时部署模板。 “模板参考‘VM-NIC-3’是无效的:找不到具有此名称的模板资源或资源副本。请参阅https://aka.ms/arm-template-expressions/#reference的使用细节。“。所以,我试图定义一个custome扩展,它会处理这两个条件。

azure arm-template
1个回答
0
投票

您可以使用if()功能门它们:

if(equals(variables('numberOfVM'), 5), reference(concat(variables('nicName'), 3)).ipConfigurations[0].properties.privateIPAddress, '')

你需要重复此为参考函数所有出现

© www.soinside.com 2019 - 2024. All rights reserved.