1

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

我已经构建了我的打包器 ami(?),其中包含应用程序(java fat jar)。

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

我想将连接属性作为我的 arm 模板中的环境变量传递给 vm。天蓝色模板可以吗?我在SO上发现了一个类似的问题,半年前问过,没有答案。但也许从那以后有些事情发生了变化?人们如何在 azure 上解决此类问题?遗憾的是,Terraform 不是一种选择,它不涵盖 azure 基础架构的其他部分。

4

2 回答 2

3

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

于 2017-05-06T18:25:00.060 回答
2

我想将连接属性作为我的 arm 模板中的环境变量传递给 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上找到许多关于此扩展的示例。

于 2017-05-08T01:28:13.883 回答