use*_*198 5 azure azure-resource-manager azure-data-factory
我正在尝试在 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": []
},
Run Code Online (Sandbox Code Playgroud)
这个ARM模板的问题是它没有使用参数来创建连接字符串,而是使用连接字符串参数database_connectionString(默认情况下连接字符串总是由Azure参数化,所以我不能删除这个参数)。
发布管道使用此模板时,没有填写连接字符串(仅填写参数),因此与数据库的连接失败。您应该如何设置连接,以便您只需更改参数即可自动(无需人工交互)部署到所有环境?
我不想更改来自 Azure 数据工厂的 ARM 模板,因为这需要人工交互
我通过使用Azure resource group deployment发布中的任务来完成此操作。其中一个选项Override template parameters可以让您完全按照您的需要进行操作。您可以创建一个空格分隔的参数列表来覆盖您的 ARM 模板并传入变量
在你的情况下它会是
-database_connectionstring $(VariableHere)
Run Code Online (Sandbox Code Playgroud)
我会将连接字符串存储在 Azure KeyVault 中并将其链接到安全变量组。您也可以直接点击标准变量上的挂锁来保护它。
然后将您的自定义变量绑定到发布中的每个阶段
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |