在 ADF ARM 模板中参数化自托管集成运行时
Parameterize Self hosted integration runtime in ADF ARM Template
我们有不同的 ADF 环境,例如 TST、UAT 和 prod。在每个环境中,自托管 IR 名称都不同。
是否可以在 ADF ARM 模板中参数化集成运行时,以便在通过 CI/CD 部署 ARM 模板时,我们可以在部署期间在 DevOps 变量组中传递 IR 名称。
我已尝试使用以下设置更改 ADF 中的参数化模板,但 IR 名称在 ARM 模板参数中仍然不可用 JSON 'arm_template_parameters.json'.
在搜索时,我发现它无法在 ADF ARM 模板中参数化集成运行时。
其他人已经发布了几乎相同的问题,Microsoft 工程师提供了一些可能有用的解决方法。他还说:
- "您的意思是使用自定义参数来参数化 IR 名称?没有
别无他法。"
您可以参考这个问题:ARM Template Custom Parameters for (self-hosted)Integration Runtime。
是的,您可以参数化 IR 运行时。但这是内在的障碍。
您可以为要使用的 IR 指定别名,并在 DEV/UAT 和 PROD 上使用相同的别名。
然后该别名将显示在您的 ARM 模板中,向要用于它的集成运行时请求 resourceId。
为了更清楚,让我们假设您有 3 个不同的 ADF 帐户:
- ADF_DEV
- ADF_UAT
- ADF_PRD
有人设置了自托管 IR,它的资源 ID 类似于:
/subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourcegroups/some-resource-group/providers/Microsoft.DataFactory/factories/SHARED_ADF/integrationruntimes/SOMESELFHOSTEDIR
所以在 ADF-DEV 中你会有这样的 IR:
{
"name": "SELFHOSTEDGW",
"properties": {
"type": "SelfHosted",
"typeProperties": {
"linkedInfo": {
"resourceId": "/subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourcegroups/some-resource-group/providers/Microsoft.DataFactory/factories/SHARED_ADF/integrationruntimes/SOMESELFHOSTEDIR",
"authorizationType": "Rbac"
}
}
}
}
在这里您可以看到 IR 的自定义别名是 SELFHOSTEDGW。
只需将您的链接服务指向此别名,在 Devops 上只需指定此 SELFHOSTEDGW 别名的不同资源 ID。
嘿@Aneesh 和@Leon Yue,
美好的一天!
实际上可以在arm模板中参数化IR名称并基于Azure Devops进行部署:)
为此,您必须在 ARM 模板和从 ADF 门户中提取的模板参数中显式创建新参数。
如下所示,直到 SQL Server1_properties 是在 ARM 模板导出后自动创建的。
我们手动创建了一个新参数 IRName_properties_typeProperties_parametervalue"
然后在模板本身内,用参数替换所有 IR 名称值:
注意:您还需要在参数模板中添加新的手动创建的参数。
然后在 Azure Devops 发布管道中,您可以使用 Devops 变量覆盖参数
发现它无法在 ADF ARM 模板中参数化集成运行时。
我们有解决此问题的方法。在 Azure DevOps 管道中,我们创建了一个 PowerShell 任务,以根据 DevOps 发布管道中定义的变量组替换自托管 IR 名称。在将 ADF ARM 模板部署到不同环境时,shell 脚本将 IR 名称替换为环境特定的 IR 名称。
#Powershell 脚本
#从 Devops 验证组获取新的 IR 名称
$integrationRuntime="$(integrationRuntimeName)"
#replacing IR名称
((Get-Content -path ARMTemplateForFactory.json -Raw) -replace 'The IR NAME to be replaced',$integrationRuntime) |设置内容-路径 ARMTemplateForFactory.json
Get-Content -path ARMTemplateForFactory.json -Raw
我们有不同的 ADF 环境,例如 TST、UAT 和 prod。在每个环境中,自托管 IR 名称都不同。 是否可以在 ADF ARM 模板中参数化集成运行时,以便在通过 CI/CD 部署 ARM 模板时,我们可以在部署期间在 DevOps 变量组中传递 IR 名称。
我已尝试使用以下设置更改 ADF 中的参数化模板,但 IR 名称在 ARM 模板参数中仍然不可用 JSON 'arm_template_parameters.json'.
在搜索时,我发现它无法在 ADF ARM 模板中参数化集成运行时。
其他人已经发布了几乎相同的问题,Microsoft 工程师提供了一些可能有用的解决方法。他还说:
- "您的意思是使用自定义参数来参数化 IR 名称?没有 别无他法。"
您可以参考这个问题:ARM Template Custom Parameters for (self-hosted)Integration Runtime。
是的,您可以参数化 IR 运行时。但这是内在的障碍。
您可以为要使用的 IR 指定别名,并在 DEV/UAT 和 PROD 上使用相同的别名。
然后该别名将显示在您的 ARM 模板中,向要用于它的集成运行时请求 resourceId。
为了更清楚,让我们假设您有 3 个不同的 ADF 帐户:
- ADF_DEV
- ADF_UAT
- ADF_PRD
有人设置了自托管 IR,它的资源 ID 类似于: /subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourcegroups/some-resource-group/providers/Microsoft.DataFactory/factories/SHARED_ADF/integrationruntimes/SOMESELFHOSTEDIR
所以在 ADF-DEV 中你会有这样的 IR:
{
"name": "SELFHOSTEDGW",
"properties": {
"type": "SelfHosted",
"typeProperties": {
"linkedInfo": {
"resourceId": "/subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourcegroups/some-resource-group/providers/Microsoft.DataFactory/factories/SHARED_ADF/integrationruntimes/SOMESELFHOSTEDIR",
"authorizationType": "Rbac"
}
}
}
}
在这里您可以看到 IR 的自定义别名是 SELFHOSTEDGW。 只需将您的链接服务指向此别名,在 Devops 上只需指定此 SELFHOSTEDGW 别名的不同资源 ID。
嘿@Aneesh 和@Leon Yue, 美好的一天!
实际上可以在arm模板中参数化IR名称并基于Azure Devops进行部署:) 为此,您必须在 ARM 模板和从 ADF 门户中提取的模板参数中显式创建新参数。
如下所示,直到 SQL Server1_properties 是在 ARM 模板导出后自动创建的。 我们手动创建了一个新参数 IRName_properties_typeProperties_parametervalue"
然后在模板本身内,用参数替换所有 IR 名称值:
注意:您还需要在参数模板中添加新的手动创建的参数。
然后在 Azure Devops 发布管道中,您可以使用 Devops 变量覆盖参数
发现它无法在 ADF ARM 模板中参数化集成运行时。 我们有解决此问题的方法。在 Azure DevOps 管道中,我们创建了一个 PowerShell 任务,以根据 DevOps 发布管道中定义的变量组替换自托管 IR 名称。在将 ADF ARM 模板部署到不同环境时,shell 脚本将 IR 名称替换为环境特定的 IR 名称。
#Powershell 脚本
#从 Devops 验证组获取新的 IR 名称 $integrationRuntime="$(integrationRuntimeName)"
#replacing IR名称 ((Get-Content -path ARMTemplateForFactory.json -Raw) -replace 'The IR NAME to be replaced',$integrationRuntime) |设置内容-路径 ARMTemplateForFactory.json
Get-Content -path ARMTemplateForFactory.json -Raw