在 ADF ARM 模板中参数化自托管集成运行时

时间:2021-01-07 11:11:01

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

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

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

enter image description here

3 个答案:

答案 0 :(得分:2)

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

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

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

enter image description here

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

enter image description here

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

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

是的,您可以参数化 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。