【问题标题】:Parameterize Self hosted integration runtime in ADF ARM Template在 ADF ARM 模板中参数化自托管集成运行时
【发布时间】:2021-01-07 11:11:01
【问题描述】:

我们有不同的 ADF 环境,例如 TST、UAT 和 prod。在每个环境中,自托管 IR 名称都不同。 是否可以在 ADF ARM 模板中参数化集成运行时,以便在通过 CI/CD 部署 ARM 模板时,我们可以在部署期间在 DevOps 变量组中传递 IR 名称。

我已尝试使用以下设置更改 ADF 中的参数化模板,但 IR 名称在 ARM 模板参数 JSON 'arm_template_parameters.json' 中仍然不可用。

【问题讨论】:

  • 大家好,我们有解决此问题的方法。在 Azure DevOps 管道中,我们创建了一个 PowerShell 任务来替换基于 DevOps 发布管道中定义的变量组的自托管 IR 名称。在将 ADF ARM 模板部署到不同环境时,shell 脚本将 IR 名称替换为特定于环境的 IR 名称。

标签: azure-data-factory azure-data-factory-2 azure-data-factory-pipeline


【解决方案1】:

嘿@Aneesh 和@Leon Yue, 美好的一天!

实际上可以在arm模板中参数化IR名称并基于Azure Devops进行部署:) 为此,您必须在 ARM 模板和从 ADF 门户中提取的模板参数中显式创建一个新参数。

如下所示,直到在 ARM 模板导出后自动创建 SQL Server1_properties。 我们手动新建了一个参数 IRName_properties_typeProperties_parametervalue"

然后在模板本身中,将所有 IR 名称值替换为参数:

注意:您还需要在参数模板中添加新手动创建的参数。

然后在 Azure Devops Release 管道中,您可以使用 Devops 变量覆盖参数

【讨论】:

  • 谢谢@Nandan。我们现在采用的方法相同,因为每次部署都需要手动操作(手动编辑模板 JSON)。有没有自动化的方法来做到这一点? :)
【解决方案2】:

当我搜索时,我发现它接缝无法参数化 ADF ARM 模板中的集成运行时。

其他人发布了几乎相同的问题,Microsoft 工程师提供了一些可能有用的解决方法。他还说:

  • “您的意思是使用自定义参数来参数化 IR 名称?没有 没有别的办法。”

您可以参考这个问题:ARM Template Custom Parameters for (self-hosted)Integration Runtime

【讨论】:

    【解决方案3】:

    是的,您可以参数化 IR 运行时。但它是内在的。

    您可以为要使用的 IR 指定别名,并在 DEV/UAT 和 PROD 上使用相同的别名。

    然后,该别名将显示在您的 ARM 模板中,向集成运行时请求要用于它的资源 ID。

    为了更清楚,让我们假设您有 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。

    【讨论】:

      【解决方案4】:

      发现它无法在 ADF ARM 模板中参数化集成运行时。 我们有解决此问题的方法。在 Azure DevOps 管道中,我们创建了一个 PowerShell 任务来替换基于 DevOps 发布管道中定义的变量组的自托管 IR 名称。在将 ADF ARM 模板部署到不同环境时,shell 脚本将 IR 名称替换为特定于环境的 IR 名称。

      #Powershell 脚本

      #从 Devops 验证组获取新的 IR 名称 $integrationRuntime="$(integrationRuntimeName)"

      #替换 IR 名称 ((Get-Content -path ARMTemplateForFactory.json -Raw) -replace '要替换的 IR 名称',$integrationRuntime) |设置内容-路径 ARMTemplateForFactory.json

      Get-Content -path ARMTemplateForFactory.json -Raw

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 2020-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        相关资源
        最近更新 更多