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

没有VM资源的Azure ARM解决方案模板的初始化逻辑,azure,azure-resource-manager,arm-template,Azure,Azure Resource Manager,Arm Template,是否可以将ARM解决方案模板(createUiDefinition.json、azuredeploy.json等)发布到Azure Marketplace,该模板具有应用程序服务和CosmosDB帐户资源,但不具有任何VM资源以具有初始化逻辑(例如,创建CosmosDB数据库、集合)部署解决方案模板后执行 如果解决方案模板包含VM,则可以使用自定义脚本扩展,但有没有办法不使用VM?我不确定您到底想要什么,但我们使用Azure函数作为arm模板的一部分来配置cosmosDb。以下是它的工作原理:

是否可以将ARM解决方案模板(createUiDefinition.json、azuredeploy.json等)发布到Azure Marketplace,该模板具有应用程序服务和CosmosDB帐户资源,但不具有任何VM资源以具有初始化逻辑(例如,创建CosmosDB数据库、集合)部署解决方案模板后执行


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

我不确定您到底想要什么,但我们使用Azure函数作为arm模板的一部分来配置cosmosDb。以下是它的工作原理:

"uri": "[concat('https://functionUrl?param1=', parameters('cosmosName'), '&param2=', listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('cosmosName')), '2016-03-31').primaryMasterKey, '&code=', parameters('functionKey'))]"
这将调用Azure函数并为其提供cosmosDb名称和密钥,您可以在Azure函数中使用该名称和密钥连接到cosmosDb并对其进行配置。唯一需要注意的是,您的函数应该返回空模板(或者不是空的,只是引擎可以解析)


是否可以在包含cosmosDB帐户资源的同一ARM解决方案模板中部署Azure功能?如果是的话,那么它解决了我的问题。您可以使用公共github repo来定义函数代码。请看这里:
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;