我正在尝试在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模板,因为这需要人工交互