【问题标题】:Azure Template Deployment: What does "ContentLink cannot be null" mean?Azure 模板部署:“ContentLink 不能为空”是什么意思?
【发布时间】:2017-02-02 17:18:22
【问题描述】:

我正在使用 JSON 模板将一个资源组部署到 Azure,其中包括一个 VM、一个网络、一个带有一些 Runbook 的自动化帐户等。

我收到以下错误,

New-AzureRmResourceGroupDeployment:下午 4:49:23 - 资源 Microsoft.Automation/automationAccounts/runbooks 'DeployAutomationName/AzureClassicAutomationTutorial' 失败 消息'{“代码”:“BadRequest”,“消息”: "{\"Message\":\"指定的参数无效。参数内容链接 不能为空。\"}"

还有:

New-AzureRmResourceGroupDeployment:下午 4:49:23 - 资源 Microsoft.Automation/automationAccounts/modules “DeployAutomationName/Microsoft.WSMan.Management”失败并显示消息 '{ "code": "BadRequest", "message": "{\"Message\":\" ContentLink 属性必须在 PUT 或重新 PUT 操作中提供。\"}" }'

这两个错误在我的自动化帐户的各种不同“资产”(我认为这是术语)中重复出现。所以对于modulesrunbookscertificatesconnections

什么是 contenLink,我如何确保它不是 Null? “ContentLink”在我的模板中没有出现,除了this,我在互联网上也找不到任何关于 contentLink 到底是什么的解释。此外,我假设“PUT”或“re-PUT”是提供模板的其余 API 的一部分,我也无法直接控制此过程。 描述我无法直接控制的问题的错误消息有什么用?

这个问题是我在成功排除 Azure 模板时遇到的许多困难的同义词:我收到的错误消息似乎是在描述 Azure 内部,我不了解也无法访问。当我无法访问实际引发这些异常的代码,也无法解释此异常的含义时,如何进行故障排除或调试?

谢谢! Here 是我的 template ,我只会复制相关文本,但我不知道什么是相关,什么是不相关强>:

【问题讨论】:

  • 能给个模板链接吗?
  • 这样我们可以看到它的全部?是的,让我试试。顺便说一句,你是唯一回答 Azure 问题的人吗???我感到很遗憾,我所有的问题都落在了你身上。
  • 我是否应该从模板中取出任何机密信息,例如订阅 ID?
  • 是的,如果你有任何硬编码的东西,你可以拿走所有这些,你是否尝试过使用 powershell\cli 进行部署?好的,现在给我一些时间来思考这个问题
  • 我一直在使用 Powershell 进行部署,以使用“New-AzureRmResourceGroupDeployment”cmdlet 调用模板。这是你的意思吗?

标签: powershell azure templates deployment


【解决方案1】:

好的,稍微戳了一下之后,您似乎缺少运行手册内容(脚本本身)。因此您的 Runbook 资源应如下所示:

{
    "type": "Microsoft.Automation/automationAccounts/runbooks",
    "name": "[parameters('runbooks_AzureAutomationTutorial_name')]",
    "apiVersion": "2015-10-31",
    "location": "eastus2",
    "properties": {
        "runbookType": "GraphPowerShell",
        "logVerbose": false,
        "logProgress": false,
        "publishContentLink": {
            "uri": "[variables('scriptUri')]",
            "version": "1.0.0.0"
        }
    },
    "resources": [],
    "dependsOn": [
        "[resourceId('Microsoft.Automation/automationAccounts', parameters('automationAccounts_deployautomation_name_1'))]"
    ]
},

和变量:

"variables": {
    "scriptUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-automation-runbook-getvms/Runbooks/Get-AzureVMTutorial.ps1",
},

我无法测试整个模板,因为我没有 base64 值,但我相信这应该可以解决您的问题。在这之后可能还有另一个,你;)谁知道呢。

参考数据:https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-automation-runbook-getvms/azuredeploy.json

此外,您可以从模板中删除模块,因为它们不是必需的,它们都是默认模块,但对它们来说,想法是相同的,您在部署模块时不提供模块数据。

您可能会在这里和那里缺少其他强制性属性,看起来 Automation Script 还不能很好地与 Azure 自动化配合使用。您可能想求助于 Powershell 来配置自动化帐户,因为它工作得很好。

附:我不知道图形运行手册的内容是什么样的。但我猜,你可以将它导出并上传到 github,它会起作用。

【讨论】:

  • 这是有道理的。再次感谢。
  • 我仍然不太清楚如何导航庞大的模板和模式池以查找我需要进行故障排除的信息,就像您在此处所做的那样。您怎么知道在哪里查找 contentLink 是什么?有资源浏览器、快速入门模板和模式存储库,但是您如何知道何时查看哪个资源,以及如何在庞大的资源中找到您需要的内容?
  • 嗯,这就是棘手的部分,实际上,我正打算为此写一篇博文,如果你愿意等几天,我可以把链接发给你
  • @AllTradesJack 所以,只需搜索我的博客(我的昵称在这里 + .com)并寻找 How to work with ARM Templates without going mad,它是当前最新的。我用来处理 ARM 模板的一切都在那里
  • 一个。它不只是发布,它是在三月份发布的。湾。它不是很有用。 C。我的博客对此进行了说明
猜你喜欢
  • 1970-01-01
  • 2017-05-07
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多