我们什么时候应该使用参数什么时候在 ARM 模板中使用变量

When should we use a parameter when to use variable in ARM templates

我对在 ARM 模板中在哪里使用变量和在哪里使用参数感到困惑。我们如何拨打这个电话?

引用的脚本同时使用了两者。我更好奇使用变量的理由。

参考

Service Fabric Azure 部署脚本示例

https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/service-fabric-oms/azuredeploy.json

ARM 模板通常用于创建一组接近相同的环境。参数是它们的不同之处。这通常用于环境类型(prod、dev、test)和 performance/cost 相关参数。 变量用于根据参数或从参数计算得出的服务创建唯一名称。

这方面的一个例子是存储帐户的名称。这通常是通过连接一个通用名称(如 _storage)和一个环境名称参数(如“test”)并将其存储在一个变量中来完成的。当您创建另一个环境时,您所要做的就是更改环境类型参数。

在 Azure 模板 json 文件中:

参数:执行部署时提供的值,自定义资源部署。

变量:在模板中用作JSON片段的值,以简化模板语言表达式。

更多信息请参考官方文档:Understand the structure and syntax of Azure Resource Manager templates.

I am more curious of the justification of using variables.

根据我的经验,如果只使用一次变量,则不需要使用变量。但是如果你想多次使用这个变量,你最好使用变量。使用变量可以简化您的模板以避免内容重复。

例如,如果您不多次使用 supportLogStorageAccountName,您可以这样做:

"name": "[toLower(concat('sf', uniqueString(resourceGroup().id),'2'))]"

但是,如果您使用提供变量 supportLogStorageAccountName several\many 次,您可以使用变量来避免重复。