在Azure数据工厂中参数化连接(ARM模板)

问题描述 投票:1回答:1

我正在尝试在CI / CD设置中设置Azure数据工厂。我遵循了Microsoft的最佳做法(https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment)。

我有4个环境(开发,测试,UAT,PRD)

总之我做了什么:

  • 创建Azure数据工厂并将其链接到DEV环境上的我的Azure DevOps存储库

  • 在其他环境(测试,UAT和PRD)上创建Azure数据工厂,但不要将其链接到DevOps。而是使用ARM模板在这些数据工厂上发布管道,并在Azure DevOps中发布管道。

  • 我已经参数化了所有必需的部分,以便能够覆盖每个环境中的设置。

目前,我能够成功部署到其他环境,但是,与Azure上的数据库的链接服务无法正常工作。我已经像微软建议的那样对所有参数进行了参数化,但是当我将我的链接服务导出到ARM模板时,它使用连接字符串而不是我的参数化设置。

以下是我在Azure数据工厂门户中的设置的图片:“

[当我尝试将其导出到ARM模板时,得到以下信息:

{
            "name": "[concat(parameters('factoryName'), '/database')]",
            "type": "Microsoft.DataFactory/factories/linkedServices",
            "apiVersion": "2018-06-01",
            "properties": {
                "parameters": {
                    "sqlServerUrl": {
                        "type": "string"
                    },
                    "databaseName": {
                        "type": "string"
                    },
                    "sqlPwd": {
                        "type": "string"
                    },
                    "sqlAdminUsername": {
                        "type": "string"
                    }
                },
                "annotations": [],
                "type": "AzureSqlDatabase",
                "typeProperties": {
                    "connectionString": {
                        "type": "SecureString",
                        "value": "[parameters('database_connectionString')]"
                    }
                }
            },
            "dependsOn": []
        },

此ARM模板的问题在于,它不使用参数来创建连接字符串,而是使用连接字符串参数database_connectionString(默认情况下,连接字符串始终由Azure参数化,因此我无法删除此参数)。

当发布管道使用此模板时,未填充连接字符串(仅填充了参数),因此,与数据库的连接失败。您应如何设置连接,以便仅更改参数即可自动(无需人工干预)部署到所有环境?

我不想更改来自Azure数据工厂的ARM模板,因为这需要人工交互

azure azure-resource-manager azure-data-factory
1个回答
0
投票

我通过使用发行版中的Azure resource group deployment任务来执行此操作。选项之一是Override template parameters,它将使您能够完全执行所需的操作。您可以创建一个用空格分隔的参数列表,以覆盖您的ARM模板并传递一个Variable

您的情况可能是

-database_connectionstring $(VariableHere)

我会将连接字符串存储在Azure KeyVault中,并将其链接到安全变量组。您也可以点击标准变量上的挂锁来保护它。

然后将自定义变量绑定到发布中的每个阶段

任务enter image description here

Overrideenter image description here

© www.soinside.com 2019 - 2024. All rights reserved.