gpt4 book ai didi

Azure Bicep - 有条件地将元素添加到数组中

转载 作者:行者123 更新时间:2023-12-02 05:56:39 25 4
gpt4 key购买 nike

我正在尝试创建一个二头肌模板来根据条件部署具有 1 个或 2 个 NIC 的虚拟机。

有人知道是否有一种方法可以在属性定义中使用条件语句来部署虚拟机网卡吗?似乎资源定义中不允许使用 if 函数,并且由于 ID 无效而导致三元错误。

只是尝试使用 resource = if (bool) {} 避免出现 2 个重复的虚拟机资源定义

networkProfile: {
networkInterfaces: [
{
id: nic_wan.id
properties: {
primary: true
}
}

{
id: bool ? nic_lan.id : '' #Trying to deploy this as a conditional if bool = true.
properties: {
primary: false
}
}

]
}

上面的代码会出错,因为一旦定义了 NIC,它就需要一个有效的 ID。

“properties.networkProfile.networkInterfaces[1].id”无效。期望以“/subscriptions/{subscriptionId}”开头的完全限定资源 ID 或'/providers/{resourceProviderNamespace}/'。 (代码:LinkedInvalidPropertyId)

最佳答案

您可以创建一些变量来处理该问题:

// Define the default nic
var defaultNic = [
{
id: nic_wan.id
properties: {
primary: true
}
}
]

// Add second nic if required
var nics = concat(defaultNic, bool ? [
{
id: nic_lan.id
properties: {
primary: false
}
}
] : [])

// Deploy the VM
resource vm 'Microsoft.Compute/virtualMachines@2020-12-01' = {
...
properties: {
...
networkProfile: {
networkInterfaces: nics
}
}
}

关于Azure Bicep - 有条件地将元素添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68931020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com