虚拟机信息:
如何在 Azure 中关闭(或停止)并取消分配 VM,而无需访问 Azure 门户?
请记住,如果您在 Azure 中执行
shutdown -h 0
;它会停止虚拟机,但不会释放它。
我问这个问题是因为我没有直接连接到 Azure 门户,也没有登录它。我想仅使用来宾操作系统取消分配虚拟机。
我了解您的情况。您只能通过 SSH 连接到 VM,但无法访问 Azure。例如,您不知道 Azure 帐户的凭据。
对于这种情况,您无法取消分配 Azure VM。 因为该操作必须使用 Azure 帐户完成,并且是在 Azure 中完成,而不仅仅是 VM。解除分配 Azure VM 还链接到其他资源,例如公共 IP 地址、磁盘、网络接口等。
如果您仍想取消分配 Azure VM,我建议您致电该 Azure VM 的所有者,他可以访问 Azure 门户。
解决此问题的另一个技巧是使用 Azure CLI 在来宾 VM 中登录,然后控制 VM。您仍然需要登录 Azure,但只需登录一次。
使用以下命令生成验证码:
登录
这将生成一个身份验证代码,可用于通过 Azure 所有者登录(仅需要一次)。使用该代码进行身份验证。
登录后,您可以发出此命令来停止并取消分配您的虚拟机:
az vm deallocate --resource-group myResourceGroup --name myVM
可以在此处
找到可用的 azure CLI 命令列表您是否已登录订阅? 如果是这样,您可以使用 azure CLI 来取消分配。 即使您没有权限,VM 也始终可以访问 Azure Fabric。
无需访问门户即可登录:
az 登录 -u [电子邮件受保护] -p VerySecret
解除分配:
az vm deallocate --resource-group myResourceGroup --name myVM
您可以使用任何自动化手段、Powershell\CLI\不同的 SDK 来关闭虚拟机。您可以创建一个脚本并执行它。 Azure Powershell 示例。
停止-AzureRmVM -ResourceGroupName“ResourceGroup11”-名称“VirtualMachine07”
您可以考虑的另一种选择是在 Azure 自动化中创建 Runbook 并添加 PowerShell 代码以从那里取消分配 VM。
接下来,您可以从 Azure Automation 中创建对此 Runbook 的 Webhook,您可以从任何地方(例如从 Postman 或使用 CURL,或任何可以发出 HTTP Post 的地方)通过 HTTP Post 请求从外部调用该 Webhook,以触发虚拟机释放。
现在,只要您想要释放虚拟机,您就可以使用 Postman 工具中的 Webhook URL,发出 HTTP Post 请求,然后 Runbook 将释放虚拟机。作为复杂工作流程的一部分,我已经在几个场景中完成了此操作,并且效果非常好。
HTH
可以使用 terraform 来做到这一点:
resource "null_resource" "deallocate_vm" {
provisioner "local-exec" {
command = "az vm deallocate --resource-group
${azurerm_linux_virtual_machine.XXX.resource_group_name} --name
${azurerm_linux_virtual_machine.XXX.name}"
}
depends_on = [azurerm_linux_virtual_machine.XXX]
}