【问题标题】:How to replace the last octet of IP address in ARM template如何替换ARM模板中IP地址的最后一个八位字节
【发布时间】:2018-09-19 17:38:18
【问题描述】:

我正在尝试在 ARM 模板中传递带有 IP 地址前缀(例如 10.0.0.0/24)的参数来部署 VNET

在 ARM 模板中,我想将 10.0.0.0/24 替换为 10.0.0.123 并将其分配给我想稍后用于创建 VM 的 NIC。

我希望有什么方法可以使用 ARM 模板来实现这一点?

【问题讨论】:

    标签: azure arm-template vnet


    【解决方案1】:

    嗯,没有漂亮的方法可以做到这一点,最简单的方法:

    "var1": "[first(split(parameters('addressPrefix'), '/'))]",
    "var2": "[substring(variables('var1'), 0, sub(length(variables('var1'), 1)))]"
    "var3": "[concat(variables('var2'), 'ipgoeshere')]"
    

    或者,您可以只删除最后 4 个字符并连接 IP 地址,或者将部分拆分并连接成一个 IP 地址:

    "var1": "[first(split(parameters('addressPrefix'), '/'))]",
    "var2": "[concat(variables('var1')[0], '.', variables('var1')[1], '.', variables('var1')[2], '.ipgoeshere')]"
    

    【讨论】:

      【解决方案2】:

      您可以使用"privateIPAllocationMethod": "Static" 并指定私有IP 地址,如下所示:

      "ipConfigurations": [
                {
                  "name": "ipconfig1",
                  "properties": {
                    "privateIPAllocationMethod": "Static",
                    "privateIPAddress": "[parameters('privateIPAddress')]",
                    "publicIPAddress": {
                      "id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]"
                    },
                    "subnet": {
                      "id": "[parameters('subnetRef')]"
                    }
                  }
                }
              ]
      

      这里有一个template关于静态私有IP地址的例子,请参考。

      【讨论】:

        【解决方案3】:

        我就是这样

        "variables" : {
            "subnetAddress" : "[first(split(parameters('subnetAddressWithMask'), '/'))]",
            "subnetOctets3" : "[take(split(variables('subnetAddress'), '.'), 3)]",
            "subnetNetwork" : "[concat(variables('subnetOctets3')[0], '.', variables('subnetOctets3')[1], '.', variables('subnetOctets3')[2])]"
          },
          "outputs": {
            "subnetAddress" : {
            "type": "string",
            "value" : "[variables('subnetAddress')]"
            },
            "subnetOctets3" : 
            {
        
            "type": "array",
            "value" :  "[variables('subnetOctets3')]"
            }
           ,
            "subnetNetwork" : {
        "type" : "string",
        "value" :     "[variables('subnetNetwork')]"
        
            }
        

        有输出

          "Outputs": {
            "deploymentAppGw": {
              "Type": "Object",
              "Value": {
                "subnetAddress": {
                  "type": "String",
                  "value": "10.0.0.0"
                },
                "subnetOctets3": {
                  "type": "Array",
                  "value": [
                    "10",
                    "0",
                    "0"
                  ]
                },
                "subnetNetwork": {
                  "type": "String",
                  "value": "10.0.0"
                }
              }
            }
          },
        

        后来我以这种方式使用它:"[concat(variables('subnetNetwork'), '.', copyIndex(10))]" 或类似方式。

        【讨论】:

          猜你喜欢
          • 2019-01-02
          • 2021-08-26
          • 2014-05-13
          • 1970-01-01
          • 2020-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多