在同一个VM上通过Azure模板运行多个自定义脚本多个、自定义、脚本、模板

2023-09-03 13:48:43 作者:請用心去對待

在使用下面的代码片段通过ARM模板创建了VM之后,我有要运行的pythonscript1.py和bash脚本script2.sh。由于某些原因,当我添加这个script2.sh时,VM创建失败。‘fileUris’和命令ToExecute是正确的。可能的原因是什么,以及在哪里查找错误?

{
              "name": "[concat(variables('web'),'/script1')]",                                
              "properties":
               {                   
                    "settings": {
                        "fileUris": ["https://.../script1.py"],
                        "commandToExecute": "python script1.py"
                   }
              }
          },
     {
              "name": "[concat(variables('web'),'/script2')]",                                                 
              "properties":
               {                
                    "settings": {
                        "fileUris": ["https://.../script2.sh"],
                        "commandToExecute": "bash script2.sh"
                   }
              }
          },
为清楚起见,我省略了type、apiVersion、Location以及Publisher、type和typeHandlerVersion。这两个脚本都依赖于"[concat(‘Microsoft.Compute/virtualMachines/’,变量(‘Web’)]"

推荐答案

对于Azure VM扩展,它是Azure资源,而不是资源的属性。因此,如果您想要在一个模板中向VM添加多个扩展,您应该将每个扩展作为一个资源。这是example。

更新

如果一个模板中有两个或多个扩展,您应该确保执行这些扩展的顺序。虽然在一个模板中有多个扩展,但它们仍在VM中逐个执行。

使用Azure Automation 自动化 定时关闭和启动虚拟机

例如,第一个扩展名为

"[concat(variables('vmName'),'/', 'antiMalwareExtension')]"

您需要在第二个扩展中添加"DependsOn":

"dependsOn":[  
     "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]",
     "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),'/', 'antiMalwareExtension')]"
  ],

后面的扩展也应该是这样的。