如何解决Azure ARM模板-如何将链接模板的输出变量作为参数传递给另一个模板?
假设我们有2个链接的手臂模板及其关联的*.params.json
文件:
-
createAppServiceTemplate.json
-
createAppServiceTemplate.params.json
-
createsqlDbTemplate.json
-
createsqlDbTemplate.params.json
第二个模板createsqlDbTemplate.json
具有输出:
"outputs": {
"connectionString": {
"type": "string","value": "[concat('Database=',parameters('databaseName'),';Server=',reference(resourceId('Microsoft.DBforPostgresql/servers',parameters('serverName')),'2017-12-01').fullyQualifiedDomainName,';User Id=',parameters('administratorLogin'),'@',parameters('serverName'),';Password=',parameters('administratorPassword'))]"
}
}
我将不提取此输出变量并将其作为参数传递给createAppServiceTemplate.params.json
。
我尝试将其添加到我的计算机中:
"parameters": {
"usersDbConnectionString": {
"value": "[reference('createsqlDbTemplate').outputs.connectionString.value]"
}
}
但是我认为参数不能计算表达式?如何实现所需的行为?
解决方法
假设您下面有链接的createSqlServerTemplate.json
模板:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {},"variables": {},"resources": [],"outputs": {
"greetingMessage": {
"value": "Hello World","type" : "string"
}
}
}
主模板部署链接的模板并获取返回的值。请注意,它按名称引用部署资源,并且使用链接模板返回的属性的名称。
main-template.json
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","resources": [
{
"type": "Microsoft.Resources/deployments","apiVersion": "2019-10-01","name": "createAppServiceTemplate","properties": {
"mode": "Incremental","templateLink": {
"uri": "[uri(deployment().properties.templateLink.uri,'createAppServiceTemplate.json')]","contentVersion": "1.0.0.0"
},"parameters": {
"userDbConnectionString: {
value: "[reference('createSqlServerTemplate').outputs.greetingMessage.value]"
}
}
}
},{
"type": "Microsoft.Resources/deployments","name": "createSqlServerTemplate",'createSqlServerTemplate.json')]","contentVersion": "1.0.0.0"
}
}
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。