Azure ARM - 如果条件

Azure ARM - If Condition

在我们的 Azure 环境中,我们有订阅名称的命名标准,但并未始终遵循这一标准,这意味着我们有以下内容:

1) <companyName>-<environment>-<businessUnit>
2) <companyName>-<role>

例如:

1) MYCOMPANY-PRD-IT
2) MYCOMPANY-SANDBOX

在我的 ARM 模板中,我从订阅中提取了环境信息(示例 1 中的 PRD),但是当我尝试部署到示例 2 之类的 SANDBOX 时失败了。以下是模板中使用的变量的示例,它是 'subXXX' 变量,我在搜索订阅名称中的第一个和最后一个“-”以查找环境时遇到问题:

"variables": {
        "rgName": "[resourceGroup().name]",
        "rgNameStart": "[substring(variables('rgName'), 0, lastIndexOf(variables('rgName'), '-'))]",
        "subName": "[subscription().displayName]",
        "subNameLengthFirst": "[add(indexOf(variables('subName'), '-'), 1)]",
        "subNameLengthLast": "[lastIndexOf(variables('subName'), '-')]",
        "subEnvironmentLength": "[sub(variables('subNameLengthLast'), variables('subNameLengthFirst'))]",
        "subEnvironment": "[substring(variables('subName'), variables('subNameLengthFirst'), variables('subEnvironmentLength'))]",
        "storageAccountName": "[concat('sa', replace(replace(variables('rgNameStart'), 'RG-', ''), '-', ''))]",
        "storageAccountNameGenerated": "[toLower(concat(variables('storageAccountName'), parameters('storageAccountRole'), parameters('storageAccountInt')))]"
    },

我需要做的是 "if subscription name = MYCOMPANY-SANDBOX then ..... else ....."

我已经查看了有关 ARM 模板条件的 Microsoft 信息,但不是最容易遵循的信息,因此希望这里有人有一个真实的例子可以提供帮助。

谢谢。

您可以在您的 ARM 中使用 RM 函数。检查 this .

下面的函数将根据您的条件 return 值。

if(condition, trueValue, falseValue)

以防万一有人想知道;我使用以下方法让它工作:

"subEnvironment": "[if(equals(variables('subName'), 'MYCOMPANY-SANDBOX'), 'SBX', substring(variables('subName'), variables('subNameLengthFirst'), variables('subEnvironmentLength')))]",

谢谢。