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

时间:2018-10-14 21:32:39

标签: azure azure-resource-manager

在使用以下代码段通过ARM模板创建VM之后,我有python script1.py和bash脚本script2.sh运行。由于某种原因,当我添加此script2.sh时,VM创建失败。 'fileUris'和commandToExecute是正确的。可能是什么原因,以及在哪里查找错误?

{
              "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"
                   }
              }
          },

为了清楚起见,我省略了类型,apiVersion,位置以及发布者,类型和typeHandlerVersion。这两个脚本都取决于 “ [[concat('Microsoft.Compute / virtualMachines /',variables('web'))]”

1 个答案:

答案 0 :(得分:1)

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

更新

如果一个模板中有两个或更多扩展名,则应确保执行扩展名的顺序。尽管一个模板中有多个扩展,但它们仍在VM中一一执行。

例如,第一个扩展名为

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

,您需要在第二个扩展名中添加“ dependsOn”:

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

之后的扩展名也应该这样做。