自定义配置脚本 Azure 资源管理器模板

Posted

技术标签:

【中文标题】自定义配置脚本 Azure 资源管理器模板【英文标题】:Custom configuration script azure resource manager template 【发布时间】:2019-12-26 20:25:19 【问题描述】:

我正在使用 ARM 模板创建一个 azure 市场报价。我正在使用我的 ARM 模板创建 Linux VM。我需要在部署后运行自定义配置脚本。我按照 azure quickstart repo 中提供的示例进行操作。

https://github.com/Azure/azure-quickstart-templates/tree/master/100-marketplace-sample 当我尝试验证模板时,出现以下错误。

   "error": 
    "additionalInfo": [
      
        "info": 
          "lineNumber": 166,
          "linePosition": 28,
          "path": "resources[1].type"
        ,
        "type": "TemplateViolation"
      
    ],
    "code": "InvalidTemplate",
    "details": null,
    "message": "Deployment template validation failed: 'The template resource 'configScript' at line '166' and column '28' is not valid. The type property is invalid. Please see https://aka.ms/arm-template/#resources for usage details.'.",
    "target": null   

, “属性”:空

我的模板的脚本部分看起来像


    "type": "extensions",
    "name": "configScript",
    "apiVersion": "2018-04-01",
    "location": "[parameters('location')]",
    "dependsOn": [
    "[parameters('vmName')]"
    ],
    "properties": 
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": 
        "fileUris": [
        "[uri(parameters('_artifactsLocation'), concat('scripts/copyfilefromazure.sh', parameters('_artifactsLocationSasToken')))]"
        ]
    ,
    "protectedSettings": 
        "commandToExecute": "[concat('bash ', variables('scriptFileName'), ' ', variables('scriptArgs'))]"
    
    
,

【问题讨论】:

你在虚拟机资源[]中有这个吗?您将定义模板的资源[],然后您应该在其中包含 Microsoft.Compute/virtualMachines 资源[]。您的 CustomScript 应该在 VM 资源[]【参考方案1】:

错误意味着它是一个嵌套资源(配置对象嵌套在站点对象内),名称需要反映这一点。因此,名称应该类似于virtualMachines/extensions,而不是 config。我还需要添加dependsOn 部分。

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

这是验证成功的模板:


  "name": "config-app",
  "type": "Extensions",
  "location": "[resourceGroup().location]",
  "apiVersion": "2019-03-01",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": 
    "displayName": "config-app"
  ,
  "properties": 
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": 
      "skipDos2Unix":false,
      "timestamp":123456789          
    ,
    "protectedSettings": 
       "commandToExecute": "<command-to-execute>",
       "script": "<base64-script-to-execute>",
       "storageAccountName": "<storage-account-name>",
       "storageAccountKey": "<storage-account-key>",
       "fileUris": ["https://.."]  
    
  

更多详情,您可以阅读这篇文章Use the Azure Custom Script Extension Version 2 with Linux virtual machines。

【讨论】:

以上是关于自定义配置脚本 Azure 资源管理器模板的主要内容,如果未能解决你的问题,请参考以下文章

自定义 Azure API 管理开发人员门户

使用 azure ARM 模板配置逻辑应用失败警报

通过 Azure 资源管理器 (ARM) 模板创建 SQL Server

通过流量管理器和 Azure Functions(作为代理)为全球用户提供最靠近的认知服务(或自定义API)

UnityTools-自定义脚本模板

UnityTools-自定义脚本模板