这应该很简单:)
有人能帮助使用AzureResourceManagerTemplateDeployment@3任务所需的语法来在overrideParameters中分配一个值,其中ARM模板参数文件需要数组吗?
示例:
ARM模板参数文件,需要一个数组:
"my-ssis-ir_publicIPs": {
"type": "array",
"defaultValue": [
"/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-01-ssisir-pip",
"/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-02-ssisir-pip"
]
},AzureResourceManagerTemplateDeployment@3代码任务-显示试图使用overrideParameters为my ir_publicIP提供重写值的尝试,其硬编码值表示两个公共ips作为数组:
- task: AzureResourceManagerTemplateDeployment@3
displayName: 'ARM Template deployment: Resource Group scope'
inputs:
azureResourceManagerConnection: ${{ parameters.azureResourceManagerConnection }}
subscriptionId: ${{ parameters.subscriptionId }}
resourceGroupName: ${{ parameters.resourceGroupName }}
location: '${{ parameters.location }}'
csmFile: '$(Build.SourcesDirectory)/${{parameters.squadName}}/$(Build.Repository.Name)/${{parameters.buildId}}/ARMTemplateForFactory.json'
csmParametersFile: '$(Build.SourcesDirectory)/${{parameters.squadName}}/$(Build.Repository.Name)/${{parameters.buildId}}/ARMTemplateParametersForFactory.json'
overrideParameters:
-my-ssis-ir_publicIPs ['/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-01-ssisir-pip','/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-02-ssisir-pip']我的大部分努力都会导致错误,指示字符串正在传递给参数,其中需要Array。
我尝试过许多选项,例如在yml文件中设置参数。
parameters:
- name: my-ssis-ir_publicIPs
type: object
default:
- '/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-01-ssisir-pip'
- '/subscriptions/XXXXX/resourceGroups/my-rg/providers/Microsoft.Network/publicIPAddresses/my-02-ssisir-pip'然后尝试为参数赋值:
overrideParameters:
-my-ssis-ir_publicIPs ${{ convertToJson(parameters.my-ssis-ir_publicIPs) }}显然,我需要使用传递到yaml文件中的参数,但我首先尝试通过在应用覆盖时学习语法来使其工作。
发布于 2022-11-01 07:42:06
它的工作方式是,您有arm模板JSON和arm模板参数JSON。
因此,您有一个参数给overrideParameters,它将传递给arm模板参数。
让我们举个例子,这里有managementgroup.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"NameId": {
"type": "string"
},
"DisplayName": {
"type": "string"
},
"ParentId": {
"type": "string"
},
"Location": {
"type": "string"
}
},
"resources": [
{
"name": "[parameters('NameId')]",
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2021-04-01",
"scope": "/",
"location": "[parameters('Location')]",
"properties": {
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups', parameters('ParentId'))]"
}
},
"displayName": "[parameters('DisplayName')]"
}
}
],
"outputs": {
"output": {
"type": "string",
"value": "[parameters('NameId')]"
}
}
}这里我们有一个managementgroup.parameters.json,它包含3个参数:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"NameId": {
"value": {}
},
"DisplayName": {
"value": {}
},
"ParentId": {
"value": {}
},
"Location": {
"value": "westeurope"
}
}
}现在,如您所见,我们将参数传递给AzureResourceManagerTemplateDeployment:
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Creating/Updating ${{ parameters.DisplayName }}"
inputs:
deploymentScope: "Management Group"
azureResourceManagerConnection: ${{ parameters.ServiceConnection }}
location: "West Europe"
csmFile: "${{ parameters.ArmBasePath }}/managementgroup.json"
csmParametersFile: "${{ parameters.ArmBasePath }}/managementgroup.parameters.json"
overrideParameters: "-NameId ${{ parameters.NameId }} -DisplayName ${{ parameters.DisplayName }} -ParentId ${{ parameters.ParentId }}"
deploymentMode: "Incremental"
deploymentOutputs: armOutputs在本例中,我从yaml传递参数。
parameters:
- name: ParentId
type: string
- name: NameId
type: string
- name: DisplayName
type: string
- name: ServiceConnection
type: string
- name: ArmBasePath
type: string现在,如果您需要多次运行此模板,例如,2次调用--一次用于网络1,第二次调用网络2--则只需创建一个模板,并尽可能多次调用它。我使用此示例创建多个管理组。我提供了这个例子,您可以修改它以适应您的问题。
发布于 2022-11-02 08:25:16
对我起作用的语法是将两个IP作为单独的参数传递,如下所示:
-my-ssis-ir_publicIPs ["${{parameters.ssisir_publicIp1}}","${{parameters.ssisir_publicIp2}}"]https://stackoverflow.com/questions/74272600
复制相似问题