如何在 ARM 模板中多次使用具有不同脚本 uri 的相同扩展名

加莱特

我想在创建 VM 后运行第一个扩展脚本。然后在部署集群之后,我想在设置中使用时间戳的同一 VM 上运行第二个扩展脚本。但我无法运行第二个脚本。它说错误如下

操作系统类型“Linux”不支持每个处理程序的多个 VMExtensions

d

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "[concat(variables('vmName'),'/install-script')]",
    "apiVersion": "[variables('computeApiVersion')]",
    "location": "[variables('location')]",
    "dependsOn": [
        "[resourceId('Microsoft.Resources/deployments', variables('vmTemplateName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Extensions",
        "type": "CustomScript",
        "typeHandlerVersion": "2.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
           "fileUris": ["[variables('installScript')]"]
        },
        "protectedSettings":{
            "commandToExecute": "[concat('bash config.sh', ' ', parameters('key'))]"
        }
    }
},



{
        "type": "Microsoft.Compute/virtualMachines/extensions",
        "name": "[concat(variables('vmName'),'/install-script1')]",
        "apiVersion": "[variables('computeApiVersion')]",
        "location": "[variables('location')]",
        "dependsOn": [
            "[resourceId(parameters('clusterResourceGroupName'), 'Microsoft.Resources/deployments', variables('clusterTemplateName'))]",
            "[resourceId('Microsoft.Resources/deployments', variables('vmTemplateName'))]"
        ],
        "properties": {
            "publisher": "Microsoft.Azure.Extensions",
            "type": "CustomScript",
            "typeHandlerVersion": "2.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
               "fileUris": ["[variables('installScript1')]"],
               "timestamp": "123456789"
            },
            "protectedSettings":{
                "commandToExecute": "[concat('bash config1.sh', ' ', parameters('key1'))]"
            }
        }
    },

更新:-

我正在使用以下方法部署集群和 VM。我仍然得到同样的错误。我添加了forceUpdatetag我需要在这种方法中修改什么才能使其工作?

    {
        "apiVersion": "[variables('resourceDeploymentApiVersion')]",
        "name": "[variables('clusterTemplateName')]",
        "type": "Microsoft.Resources/deployments",
        "resourceGroup": "[parameters('clusterResourceGroupName')]",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[variables('clusterTemplateURL')]"
            },
            "parameters": {},
        }
     },
     {
        "apiVersion": "[variables('resourceDeploymentApiVersion')]",
        "name": "[variables('vmTemplateName')]",
        "type": "Microsoft.Resources/deployments",
        "resourceGroup": "[parameters('vmGroupName')]",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[variables('vmTemplateURL')]"
            },
            "parameters": {},
        }
     }
 {
        "type": "Microsoft.Compute/virtualMachines/extensions",
        "name": "[concat(variables('vmName'),'/install-script')]",
        "apiVersion": "[variables('computeApiVersion')]",
        "location": "[variables('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.Resources/deployments', variables('vmTemplateName'))]"
        ],
        "properties": {
            "publisher": "Microsoft.Azure.Extensions",
            "type": "CustomScript",
            "typeHandlerVersion": "2.0",
            "autoUpgradeMinorVersion": true,
            "forceUpdateTag": "v.1.0",
            "settings": {
               "fileUris": ["[variables('installScript')]"]
            },
            "protectedSettings":{
                "commandToExecute": "[concat('bash config.sh', ' ', parameters('key'))]"
            }
        }
    },



    {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "name": "[concat(variables('vmName'),'/install-script1')]",
            "apiVersion": "[variables('computeApiVersion')]",
            "location": "[variables('location')]",
            "dependsOn": [
                "[resourceId(parameters('clusterResourceGroupName'), 'Microsoft.Resources/deployments', variables('clusterTemplateName'))]",
                "[resourceId('Microsoft.Resources/deployments', variables('vmTemplateName'))]"
            ],
            "properties": {
                "publisher": "Microsoft.Azure.Extensions",
                "type": "CustomScript",
                "typeHandlerVersion": "2.0",
                "autoUpgradeMinorVersion": true,
                "forceUpdateTag": "v.1.1",
                "settings": {
                   "fileUris": ["[variables('installScript1')]"]
                },
                "protectedSettings":{
                    "commandToExecute": "[concat('bash config1.sh', ' ', parameters('key1'))]"
                }
            }
        },
4c74356b41

您可以使用嵌套部署来做到这一点。所以你需要创建一个带有脚本扩展名的虚拟机并创建一个嵌套部署。嵌套部署需要依赖扩展才能完成。嵌套部署将只是另一个资源 (Microsoft.Compute/virtualMachines/extensions),它必须与之前的脚本扩展名具有相同的名称和不同的forceUpdateTag. 这样它就会起作用。

需要此解决方法是因为 VM 只能拥有每个扩展类型的 1 个副本。通过这种方式,您可以使用新值更新扩展名并强制它使用forceUpdateTag.

工作示例:
https ://paste.ee/p/4mOiI - 仅带有脚本扩展的嵌套模板
https://paste.ee/p/nG7XV - 父模板

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用具有相同扩展名的differnet应用程序打开文件

来自分类Dev

如何对不同的主模式使用相同的文件扩展名

来自分类Dev

如何在目录中查找所有具有相同扩展名的文件

来自分类Dev

如何在目录中查找所有具有相同扩展名的文件

来自分类Dev

如何在目录中并行查找所有具有相同扩展名的文件

来自分类Dev

如何检测具有相同名称但扩展名不同的文件?

来自分类Dev

如何检测具有相同名称但扩展名不同的文件?

来自分类Dev

如何使用rm一次性删除具有相同扩展名的文件?

来自分类Dev

如何在具有相同扩展名但名称包含特定结尾的Powershell中返回文件?

来自分类Dev

如何删除所有具有相同扩展名“ .TMP”的文件?

来自分类Dev

Windows 10:如何列出没有相同名称但扩展名不同的文件?

来自分类Dev

如何在FreeMarker模板中删除文件扩展名

来自分类Dev

如何在Django的不同目录中调用具有相同名称的模板?

来自分类Dev

Plates Template Engine - URI 扩展名与 Twig 'pathFor' 相同?

来自分类Dev

.htaccess:如何重写文件URI以在重定向中忽略扩展名和父文件夹?

来自分类Dev

如何使用BAT脚本重命名具有不同扩展名的顺序选择的文件?

来自分类Dev

如何在C#中使用扩展名获得Chrome扩展名和状态

来自分类Dev

如何在python中对图像序列(具有不同的扩展名)进行排序

来自分类Dev

如何在Swift中从扩展名中调用函数

来自分类Dev

如何在Windows中重新打包.ANE扩展名

来自分类Dev

如何在Java中读取SNI扩展名?

来自分类Dev

如何在grails中获取文件扩展名?

来自分类Dev

如何在Android中获取文件扩展名?

来自分类Dev

如何在Flutter中获取文件扩展名?

来自分类Dev

如何在PHP中检查正确的文件扩展名?

来自分类Dev

如何在PCManFM中隐藏某个扩展名的文件

来自分类Dev

如何在grails中获取文件扩展名?

来自分类Dev

如何在shellscript中匹配特定的文件扩展名

来自分类Dev

如何在.gitignore文件中使用可选扩展名?

Related 相关文章

  1. 1

    如何使用具有相同扩展名的differnet应用程序打开文件

  2. 2

    如何对不同的主模式使用相同的文件扩展名

  3. 3

    如何在目录中查找所有具有相同扩展名的文件

  4. 4

    如何在目录中查找所有具有相同扩展名的文件

  5. 5

    如何在目录中并行查找所有具有相同扩展名的文件

  6. 6

    如何检测具有相同名称但扩展名不同的文件?

  7. 7

    如何检测具有相同名称但扩展名不同的文件?

  8. 8

    如何使用rm一次性删除具有相同扩展名的文件?

  9. 9

    如何在具有相同扩展名但名称包含特定结尾的Powershell中返回文件?

  10. 10

    如何删除所有具有相同扩展名“ .TMP”的文件?

  11. 11

    Windows 10:如何列出没有相同名称但扩展名不同的文件?

  12. 12

    如何在FreeMarker模板中删除文件扩展名

  13. 13

    如何在Django的不同目录中调用具有相同名称的模板?

  14. 14

    Plates Template Engine - URI 扩展名与 Twig 'pathFor' 相同?

  15. 15

    .htaccess:如何重写文件URI以在重定向中忽略扩展名和父文件夹?

  16. 16

    如何使用BAT脚本重命名具有不同扩展名的顺序选择的文件?

  17. 17

    如何在C#中使用扩展名获得Chrome扩展名和状态

  18. 18

    如何在python中对图像序列(具有不同的扩展名)进行排序

  19. 19

    如何在Swift中从扩展名中调用函数

  20. 20

    如何在Windows中重新打包.ANE扩展名

  21. 21

    如何在Java中读取SNI扩展名?

  22. 22

    如何在grails中获取文件扩展名?

  23. 23

    如何在Android中获取文件扩展名?

  24. 24

    如何在Flutter中获取文件扩展名?

  25. 25

    如何在PHP中检查正确的文件扩展名?

  26. 26

    如何在PCManFM中隐藏某个扩展名的文件

  27. 27

    如何在grails中获取文件扩展名?

  28. 28

    如何在shellscript中匹配特定的文件扩展名

  29. 29

    如何在.gitignore文件中使用可选扩展名?

热门标签

归档