0

给定一个 template.json :

"parameters": {

    "virtualMachineName": {
        "type": "string"
    },
      "networkInterfaceName": {
        "type": "string"
    }
}

如何根据 virtualMachineName 的输入设置 networkInterfaceName?

例如:

New-AzureRmResourceGroupDeployment -Name MyDeployment -TemplateFile .\template.json -TemplateParameterFile .\parameters.json

将提示输入 VirtualMachineName,如果输入了“test-vm”,我们希望 networkInterfaceName 默认为“test-vm-nic”。

我们已经尝试添加这个parameters.json:

"networkInterfaceName": {
        "value": "[concat(parameters('virtualMachineName'),'_nic')]"
},

但收到错误:

Error: Code=InvalidResourceName; Message=Resource name 
[concat(parameters('virtualMachineName'),'_nic')] is invalid. The 
name can be up to 80 characters long. It must begin with a word character,  
and it must end with a word character or with '_'. The name may contain word 
characters or '.', '-', '_'.
4

1 回答 1

2

您可以在主模板的变量下添加 NIC 名称,而不是在参数下。然后,您的参数部分将仅包含“virtualMachineName”参数:

"parameters": {
      "virtualMachineName": {
        "type": "string"
      }
    },
"variables": {
      "networkInterfaceName": "[concat(parameters('virtualMachineName'),'_nic')]"
    },
"resources":{
...
}

在资源定义中,您将 nic 名称定义为

variables('networkInterfaceName')
于 2018-03-16T16:37:13.047 回答