如何将一个参数文件用于使用一些不同参数的模板? (在 DevOps Pipelines 中使用 Powershell 部署 Azure LogicApp)

Posted

技术标签:

【中文标题】如何将一个参数文件用于使用一些不同参数的模板? (在 DevOps Pipelines 中使用 Powershell 部署 Azure LogicApp)【英文标题】:How can I use one parameter file for templates that use some different parameters? (Azure LogicApp deployment using Powershell in DevOps Pipelines) 【发布时间】:2020-04-24 19:31:16 【问题描述】:

所以我现在正在做一个项目,但我遇到了一个问题。在我工作的公司中,我们使用两个不同的资源组,一个用于演示,一个用于生产。在此之前,我们过去常常从演示帐户手动复制每个新的 Logic App 并更改参数,以便它使用正确的参数进行生产。到目前为止,我们有大约 80 个逻辑应用程序,我们将它们分组。目标是让它变得更容易,并且需要尽可能少的手动工作。

我们正在使用它们来同步 SQL 表、CRM 数据和许多其他东西。所以我有许多使用不同参数的逻辑应用程序。例如,一个可以从日历同步到 SQL 服务器,另一个同步两个 SQL 表,但每个表必须由不同的用户访问。我想要做的是根据同步有 6-7 个参数文件。但是,当部署发现我有模板未使用的参数值时,部署会失败并出现以下错误,这使得必须为几乎所有新的逻辑应用创建新的参数文件:

Code=InvalidTemplate; Message=Deployment template validation failed: 'The template parameters 'sql_server......' in the parameters file are not valid; they are not present in the original template and can therefore not be provided at deployment time. The only supported parameters for this template are 'logicAppName, logicAppLocation........ sql-8_username, sql-8_password, sql-8_sqlConnectionString'. Please see https://aka.ms/arm-deploy/#parameter-file for usage details.'.

有没有办法让这些参数成为可选参数,以便每个模板都使用它需要的参数?我四处搜索,但发现的主要内容没有多大帮助 => https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-best-practices#parameters

非常感谢你们提供的任何帮助!

【问题讨论】:

【参考方案1】:

您可以通过使用defaultValue 来选择为参数提供值。

为参数提供的任何defaultValue 必须对默认部署配置中的所有用户有效。 不要为用户名、密码(或任何需要安全字符串的内容)或任何会增加应用程序攻击面的内容提供默认值 不要使用空字符串作为默认值(使用语言表达式来简化场景) 模板表达式可用于创建默认值

参考:https://github.com/Azure/azure-quickstart-templates/blob/master/1-CONTRIBUTION-GUIDE/best-practices.md#parameters

【讨论】:

问题是一旦脚本看到我有一个模板不使用的参数名称,它就会抛出一个错误并且部署不会发生。它与参数值无关,它与文件中存在的参数有关。或者我做错了什么。

以上是关于如何将一个参数文件用于使用一些不同参数的模板? (在 DevOps Pipelines 中使用 Powershell 部署 Azure LogicApp)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从views.py发送的变量将几个参数传递给url模板标签

如何将 exec 参数中的管道用于查找命令?

在 C++ 中,如何将返回值模板化为与参数值不同?

如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件

如何将两个参数传递给百里香模板?

如何“忽略”哈希图的模板参数?