azure-arm模板中的环境变量

时间:2017-05-06 17:58:13

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

我尝试使用azure模板和打包器在azure上自动部署。

我的包装工ami(?)已经打造,包括应用程序(java fat jar)。

现在,我的应用程序连接到azure evnet hub,它与我的vm同时部署并在同一个json模板中声明。

我想在我的arm模板中将连接属性作为环境变量传递给vm。是否可以使用天蓝色模板?半年前,我在SO上发现了一个类似的问题,没有答案。但也许从那以后发生了一些变化?人们如何解决天蓝色的问题? Terraform不是一个可悲的选择,它不包括天蓝色基础设施的其他部分。

2 个答案:

答案 0 :(得分:3)

不,你不能直接设置环境。使用ARM模板到VM的变量,但您可以使用ARM模板部署脚本扩展,这样就可以为您完成。

答案 1 :(得分:2)

  

我想将连接属性作为环境传递给vm   我的手臂模板中的变量。是否可以使用天蓝色模板?

正如4c74356b41所说,模板不直接支持这一点。根据您的情况,我建议您使用Custom Script Extension

自定义脚本扩展在Azure虚拟机上下载并执行脚本。此扩展对于部署后配置,软件安装或任何其他配置/管理任务非常有用。

Azure自定义脚本扩展支持Linux和Windows,您可以编写一个脚本,将连接属性配置为vm,并使用扩展在VM上执行。自定义脚本扩展模板示例如下所示:

 "resources": [
                {
                    "type": "extensions",
                    "name": "CustomScriptExtension",
                    "apiVersion": "2015-06-15",
                    "location": "[resourceGroup().location]",
                    "dependsOn": [
                        "[variables('vmName')]"
                    ],
                    "properties": {
                        "publisher": "Microsoft.Compute",
                        "type": "CustomScriptExtension",
                        "typeHandlerVersion": "1.8",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "fileUris": [
                                "[concat(parameters('_artifactsLocation'), '/', variables('ScriptFolder'), '/', variables('ScriptFileName'), parameters('_artifactsLocationSasToken'))]"
                            ],
                            "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('scriptFolder'), '/', variables('scriptFileName'), ' ', variables('scriptParameters'))]"
                        }
                    }
                }
            ]

他们可以在Git Hub上找到有关此扩展程序的许多示例。