【问题标题】:Azure ARM Template - Set NSG and Subnet on single input parameterAzure ARM 模板 - 在单个输入参数上设置 NSG 和子网
【发布时间】:2023-03-18 17:23:01
【问题描述】:

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

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

我的问题是,我不想让人们分别选择一个子网和一个 NSG(从技术上讲,他们可以选择两个单独的并且规则不会对齐 = 没有连接),我想在一个参数中提示他们说出服务器的“用途”(应用程序、SQL、Web、DMZ 等)并根据他们的回答自动设置新 VM 也需要添加的 NSG 和子网。

想法?

【问题讨论】:

    标签: json azure azure-resource-manager azure-template


    【解决方案1】:

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

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

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

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

    NSG 也是如此

    【讨论】:

    • 一个例子是:Application Server = Purpose Subnet = Sub-EUS-App NSG = NSG-EUS-App 我感觉我需要做类似的事情:Server Purpose = (Application 、Web、DMZ 等)带有 if 语句的变量,例如:"nsgName": { (if(equals(parameters('serverPurpose'),'Application'),'NSG-E‌​US-App, [nested if]) }
    猜你喜欢
    • 2019-03-23
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多