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')))]",
谢谢。
在我们的 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')))]",
谢谢。