azure arm 模板可用区配置 - IF 语句不通过空值/空值
Posted
技术标签:
【中文标题】azure arm 模板可用区配置 - IF 语句不通过空值/空值【英文标题】:azure arm template Availability zone config - IF statement not passing through null/empty value 【发布时间】:2021-12-18 18:43:43 【问题描述】:尝试对使用 arm 模板部署 vm 的 ps1 脚本进行一些额外的调整。
脚本询问是否需要可用区域,如果需要,则为您提供可用区域选项。 如果不需要,则将 $zone 变量设置为 defaultvalue 或 null,然后在 arm 模板中使用该值来部署没有任何可用区的 vm。
我的 template.json 文件包含该区域的以下参数。
"availabilityZone":
"type": "array",
"defaultValue": []
IF 语句包含
"zones": "[if(empty(parameters('availabilityZone')), json('[]'), array(parameters('availabilityZone')))]"
我也尝试过使用以下方法,但它不起作用
json('null')
如果我对可用区进行硬编码,那么它会相应地进行部署。 如果将可用区排除在部署之外,它将部署到可用区 1。
如果 $zone 设置为 0、$null 或留空,则失败并显示
错误:代码=InvalidDeploymentParameterValue; Message=部署参数“availabilityZone”的值为空。请指定值或使用参数引用。
我错过了什么?
干杯
【问题讨论】:
如果没有通过 PowerShell 脚本传递参数,则 ARM 模板选择默认值。您可以参考this 文档以使用 PowerShell 内联参数传递参数值。 您可以在 ARM 模板中使用 if 条件 - docs.microsoft.com/en-us/azure/azure-resource-manager/templates/… 谢谢大家...我会看看,看看我能不能弄清楚。我很快就会有一些问题!...谢谢! 我尝试了以下... "zones": [ "if(empty(parameters('availabilityZone')),parameters('availabilityZone'),array(parameters('availabilityZone'))) " ] 但无法让它工作......我错过了什么? 也试过这个“区域”:“[if(not(empty(parameters('availabilityZone'))), reference(parameters('availabilityZone'), json('null'))]”但收到一条错误消息说 14:57:51 - 错误:代码=无效模板;消息=部署模板语言表达式评估失败:'无法解析语言表达式 |'if(not(empty(parameters('availabilityZone'))),参考(参数('availabilityZone'),json('null'))':预期令牌'RightParenthesis'和|实际'EndOfData'。'。有关使用详情,请参阅aka.ms/arm-template-expressions。 【参考方案1】:property zone 是一个数组,你可以通过传递空数组 '[]' 来实现你所需要的
【讨论】:
嘿,伙计...你能告诉我正确的代码吗?以上是关于azure arm 模板可用区配置 - IF 语句不通过空值/空值的主要内容,如果未能解决你的问题,请参考以下文章
是否可以通过 ARM 模板将分配的 Azure DSC 配置更新到 VM?