基于输入参数的 Azure ARM 模板参数
Azure ARM Template Parameter Based on Input Parameter
给定一个 template.json 并且:
"parameters": {
"virtualMachineName": {
"type": "string"
},
"networkInterfaceName": {
"type": "string"
}
}
如何根据输入的 virtualMachineName 设置 networkInterfaceName?
例如:
New-AzureRmResourceGroupDeployment -Name MyDeployment -TemplateFile .\template.json -TemplateParameterFile .\parameters.json
将提示输入 VirtualMachineName,如果输入 'test-vm',我们希望网络接口名称默认为 '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 '.', '-', '_'.
您可以在主模板的变量下添加网卡名称,而不是在参数下。您的参数部分将只包含 'virtualMachineName' 参数:
"parameters": {
"virtualMachineName": {
"type": "string"
}
},
"variables": {
"networkInterfaceName": "[concat(parameters('virtualMachineName'),'_nic')]"
},
"resources":{
...
}
在资源定义中,您可以将网卡名称定义为
variables('networkInterfaceName')
给定一个 template.json 并且:
"parameters": {
"virtualMachineName": {
"type": "string"
},
"networkInterfaceName": {
"type": "string"
}
}
如何根据输入的 virtualMachineName 设置 networkInterfaceName?
例如:
New-AzureRmResourceGroupDeployment -Name MyDeployment -TemplateFile .\template.json -TemplateParameterFile .\parameters.json
将提示输入 VirtualMachineName,如果输入 'test-vm',我们希望网络接口名称默认为 '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 '.', '-', '_'.
您可以在主模板的变量下添加网卡名称,而不是在参数下。您的参数部分将只包含 'virtualMachineName' 参数:
"parameters": {
"virtualMachineName": {
"type": "string"
}
},
"variables": {
"networkInterfaceName": "[concat(parameters('virtualMachineName'),'_nic')]"
},
"resources":{
...
}
在资源定义中,您可以将网卡名称定义为
variables('networkInterfaceName')