Azure ARM 模板 - 条件输入参数
Azure ARM Template - conditional input parameter
简而言之:
是否可以在 parameter
中包含 condition
字段(或其他实现此功能的字段),以便仅根据另一个字段向用户询问此参数输入参数值。
即,仅当用户 selects Create New
在参数上时,才应要求输入该参数的名称。
详细信息:
我有一个参数 virtualNetworkCreateNewOrUseExisting
,它将接受两个值 - Create New
和 Use Existing
。
"parameters": {
"virtualNetworkCreateNewOrUseExisting": {
"type": "string",
"defaultValue": "Create New",
"allowedValues": [
"Create New",
"Use Existing"
]
},
// Other parameters
}
我正在尝试根据用户的输入创建 Virtual Network
。
如果用户 selects Create New
,它将被创建,如果他们 select Use Existing
,它将被跳过。我看到这可以通过在 resource
.
中使用 condition
字段来实现
"resources": [
{
"condition": "[equals(parameters('virtualNetworkCreateNewOrUseExisting'), 'Create New')]",
// Other fields
}
// Other resources
]
现在,我的问题是,
与此类似,是否可以在另一个parameter
中包含condition
字段,以便向用户询问此参数输入,仅基于前一个参数值。
即,仅当用户 selects Create New
时,才应询问 Virtual Network Name
的输入。
像这样,通过使用 condition
字段:
"parameters": {
"virtualNetworksName": {
"condition": "[equals(parameters('virtualNetworkCreateNewOrUseExisting'), 'Create New')]",
"defaultValue": "vn-1",
"type": "string"
},
// Other parameters
}
但是,我看到 condition
字段在参数内部不受支持(至少到目前为止)。
或者,是否至少可以有这样的 if
语句(这样,如果用户 select,字段的值将默认显示 empty
s Use Existing
.):
"parameters": {
"virtualNetworksName": {
"defaultValue": "[if(equals(parameters('virtualNetworkCreateNewOrUseExisting'),'Create New'), 'vn-1', '')]",
"type": "string"
},
// Other parameters
}
或者,还有其他方法可以实现这个目标吗?
根据当前 Azure documentation,我们无法在参数块中向参数添加条件。
作为旁注,您可以在部署模板时使用 PowerShell parameter inline functions。
我们看到已经有一个功能请求要添加 Support functions within the definition of parameters... · Community (azure.com) 我们建议您对现有的反馈请求发表评论并点赞。
您不能在模板文件中本地执行此操作,但在用于部署模板的门户用户体验中,您可以...请参阅:
和
您没有使用 templateSpec 或 managedApp(请参阅此处的“部署到 Azure 按钮:https://github.com/Azure/azure-quickstart-templates/tree/master/demos/100-marketplace-sample)
但如果可以的话,templateSpec 或 managedApp 会给你更好的体验。
简而言之:
是否可以在 parameter
中包含 condition
字段(或其他实现此功能的字段),以便仅根据另一个字段向用户询问此参数输入参数值。
即,仅当用户 selects Create New
在参数上时,才应要求输入该参数的名称。
详细信息:
我有一个参数 virtualNetworkCreateNewOrUseExisting
,它将接受两个值 - Create New
和 Use Existing
。
"parameters": {
"virtualNetworkCreateNewOrUseExisting": {
"type": "string",
"defaultValue": "Create New",
"allowedValues": [
"Create New",
"Use Existing"
]
},
// Other parameters
}
我正在尝试根据用户的输入创建 Virtual Network
。
如果用户 selects Create New
,它将被创建,如果他们 select Use Existing
,它将被跳过。我看到这可以通过在 resource
.
condition
字段来实现
"resources": [
{
"condition": "[equals(parameters('virtualNetworkCreateNewOrUseExisting'), 'Create New')]",
// Other fields
}
// Other resources
]
现在,我的问题是,
与此类似,是否可以在另一个parameter
中包含condition
字段,以便向用户询问此参数输入,仅基于前一个参数值。
即,仅当用户 selects Create New
时,才应询问 Virtual Network Name
的输入。
像这样,通过使用 condition
字段:
"parameters": {
"virtualNetworksName": {
"condition": "[equals(parameters('virtualNetworkCreateNewOrUseExisting'), 'Create New')]",
"defaultValue": "vn-1",
"type": "string"
},
// Other parameters
}
但是,我看到 condition
字段在参数内部不受支持(至少到目前为止)。
或者,是否至少可以有这样的 if
语句(这样,如果用户 select,字段的值将默认显示 empty
s Use Existing
.):
"parameters": {
"virtualNetworksName": {
"defaultValue": "[if(equals(parameters('virtualNetworkCreateNewOrUseExisting'),'Create New'), 'vn-1', '')]",
"type": "string"
},
// Other parameters
}
或者,还有其他方法可以实现这个目标吗?
根据当前 Azure documentation,我们无法在参数块中向参数添加条件。
作为旁注,您可以在部署模板时使用 PowerShell parameter inline functions。
我们看到已经有一个功能请求要添加 Support functions within the definition of parameters... · Community (azure.com) 我们建议您对现有的反馈请求发表评论并点赞。
您不能在模板文件中本地执行此操作,但在用于部署模板的门户用户体验中,您可以...请参阅:
和
您没有使用 templateSpec 或 managedApp(请参阅此处的“部署到 Azure 按钮:https://github.com/Azure/azure-quickstart-templates/tree/master/demos/100-marketplace-sample)
但如果可以的话,templateSpec 或 managedApp 会给你更好的体验。