我正在为 Azure Log Analytics 工作区创建一个 ARM 模板。它有一些使用 Azure VM 的 VMUUID 的查询。有没有办法在 ARM 模板中获取 Azure VM 的 VMUUID,或者有任何其他方法可以获取 Azure VMUUID?
答案1
根据2014 年的一篇博客文章应该可以使用一些非常简单的脚本获取 Linux 和 Windows 主机的 VMUUID。例如这个(适用于 Windows):
$computerSystemProduct = Get-WmiObject -class Win32_ComputerSystemProduct -namespace root\CIMV2
'BIOS GUID: "{0}"' -f $computerSystemProduct.UUID
这些脚本可以在虚拟机本身上运行,或者通过使用 Azure 中虚拟机刀片提供的“运行命令”选项来运行。
您还可以使用虚拟机扩展。这样,您可以在部署完成后立即准备好 VMUUID。扩展在模板中的示例如下:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2020-12-01",
"name": "[concat(parameters('vmName'),'/', 'GetVMUUID')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/',parameters('vmName'))]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.7",
"autoUpgradeMinorVersion":true,
"settings": {
"fileUris": [
"https://raw.githubusercontent.com/<Path to the script for getting VMUUID>"
],
"commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File GetVMUUID.ps1"
}
}
}
请记住,脚本(第一个代码块)本身需要通过 URI 供 Azure 资源管理器访问。您可以通过公共 GitHub 存储库(可能是最简单的)或通过 Azure 存储帐户和 SAS 令牌提供此信息。
现在,对于直接获取输出,我不太确定。一种选择是附加脚本,并将其写入您稍后可以访问的文件或位置。另一种选择,我还没有尝试过,是通过模板本身获取输出,如本示例中所述:Azure 快速启动模板。我稍后可能会自己启动 RG 来看看,但如果您决定检查该路线,请随时告诉我,以及它进展如何 :)
这篇文章比我预期的要长,而且可能不太清楚,但我至少希望它能为你指明正确的方向!
谢谢,埃米尔