没有VM资源的Azure ARM解决方案模板的初始化逻辑

时间:2018-07-30 11:09:02

标签: azure azure-resource-manager arm-template

是否有可能将ARM解决方案模板(createUiDefinition.json,azuredeploy.json等)发布到Azure Marketplace,该模板具有App Service和CosmosDB帐户资源,但没有任何VM资源具有初始化逻辑(例如创建CosmosDB数据库,集合),这些解决方案在部署解决方案模板后立即执行。

如果解决方案模板包含VM,则可以使用自定义脚本扩展,但是有没有VM的方法吗?

1 个答案:

答案 0 :(得分:0)

我不确定您到底要做什么,但是我们将Azure Function用作手臂模板的一部分来配置cosmosDb。运作方式如下:

"uri": "[concat('https://functionUrl?param1=', parameters('cosmosName'), '&param2=', listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('cosmosName')), '2016-03-31').primaryMasterKey, '&code=', parameters('functionKey'))]"

这将调用Azure Function并为其提供cosmosDb名称和密钥,您可以在Azure Function中使用它来连接到cosmosDb并对其进行配置。唯一的警告是您的函数应返回空模板(或不为空,只能由引擎解析)。

var template = @"{'$schema': 'https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#', 'contentVersion': '1.0.0.0', 'parameters': {}, 'variables': {}, 'resources': []}";
HttpResponseMessage myResponse = req.CreateResponse(HttpStatusCode.OK);
myResponse.Content = new StringContent(template, System.Text.Encoding.UTF8, "application/json");
return myResponse;