Azure ARM 模板 - 在单个输入参数上设置 NSG 和子网

Azure ARM Template - Set NSG and Subnet on single input parameter

正在根据提出的一组问题创建基于 VM 的 Azure 模板。截至目前,我有两个与网络相关的参数字段,一个是子网名称(现有子网),另一个是 NSG 名称(同样已经存在)。

在这个模板中,我不想创建新的子网或 NSG,我们设置环境的方式是我们网络的扩展,因此每个子网都绑定到特定的 NSG,因为它们有特定的用途;例如,Application Subnet/NSG、SQL Subnet/NSG、Web Subnet/NSG 等,其中定义了规则。

我的问题是,与其让人们 select 每个人都有一个子网和一个 NSG(他们在技术上可以 select 两个分开并且规则不一致 = 没有连接),我想在参数中提示他们说服务器 "purpose"(应用程序、SQL、Web、DMZ 等)并根据他们的回答自动设置新 VM 需要的 NSG 和子网也被添加了。

想法?

好吧,如果 application\sql\dmz 和 subnet\nsg 之间的 link 是固定的和预定义的,您可以轻松完成。创建变量并计算值:

"subnet": "[concat(parameters('purpose'), ' Subnet')]",
"nsg": "[concat(parameters('purpose'), ' Subnet/NSG')]",

您可以使用对象进行映射:

subnets: {
    "application": "purposesubnet",
    "sql": "nopurposesubnet",
    ...
},
subnet: "[variables('subnets')[parameters('applicationPurpose')]]"

NSG 也一样