优秀的编程知识分享平台

网站首页 > 技术文章 正文

怎样实现微软云虚拟机自动关机和开机

nanyue 2025-09-18 23:54:31 技术文章 2 ℃

云用户要节省开支,关键就是减少资源的浪费,对于云虚拟机,在某些固定时段不需要跑运算时关掉,需要跑运算的时段才开启,可以大大减少浪费节省云费用。


对于微软云Azure,自动关机的设置相当简单,在要设置自动关机的VM配置里面,选择“Auto-shutdown”选项,选择Enabled On, 再放一个每天自动关机的时间,比如22:00:00 PM,选择时区,最好再开启通知,在每次Azure要关机前发一个邮件,让管理员知道一下。


提个醒:做这个自动关机实验的时候可能会遇到一个问题,如果设置的关机时间是在配置时的时间的半个小时以内,并且开启了通知,自动关机会失败。


自动开机则没那么简单,需要运用到 Azure Automation Account,配置Azure Runbook。具体步骤如下:


  1. 给要自动开机的虚拟机打个标签。在"Virtual Machine"页面,勾选要操作的虚拟机,然后点击"Assign tags"选项,如下打入标签,关键字是右边的"6amStart",如下图:


2.创建一个Azure Automation Account。搜索“Azure Automation Account”,开启Azure Automation Account页面,点击"Add"来添加一个Azure Automation Account, 配置Azure Automation Account很简单, 唯一要注意的是“Create Azure Run As account”要选“Yes"。3. 打开刚创建的Azure Automation Account (下面以AAA来代替),选择Runbook,再选择"Create a runbook",Runbook就是一个自动化脚本,支持的格式有PowerShell, Python 2 (s是的,还不支持Python 3)等:

4.这个以Powershell为例,在编辑PowerShell Runbook里,插入下面的PowerShell命令:

$Conn = Get-AutomationConnection -Name AzureRunAsConnection

Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

$VMs = Get-AzureRMVM | where {$_.Tags.Values -like '*6amStart*'}

$VMs | Start-AzureRmVM

Write-Output $VMs.Name

上面的命令会对打了"6amStartup"标签的虚拟机进行开机操作。点击"Save"来保存Runbook,再点击"Test Pane"再点击"Start"来测试脚本,成功的测试结果如下:

5.回到RunBook Edit页面,点击"Publish"来发布该脚本。

6.回到RunBook设置页面,点击"Link to schedule",创建一个新的Schedule,如下图配置的,从2020年6月2号开始,固定会每天早上六点跑脚本:


7.创建完成。

Tags:

最近发表
标签列表