Freigeben über


体验Azure的 Automation “自动化” 服务预览版

一直想要实现对Azure上跑的虚机进行定期的自动备份。在网上搜了一下有关的解决方案,发现一个不错的帖子,是基于国外的Azure服务做的。基本原理就是利用Azure的Automation(自动化)服务来写PowerShell脚本完成关机、备份、开机。最近发现国内Azure也有了“自动化”服务,便决定把这个贴子里说到的方法搬到国内Azure上试一试。

首先,你会看到在左侧菜单里有“自动化”的服务。

选择“新建”>>“自动化”>>“运行手册”>>“快速创建”。这里有几项信息要填。

  • RUNBOOK名称:这里需要给你的脚本取个名字,比如“MyTestRunbook”,这里我用了“BackupMoodleVM”这个名字
  • 说明:可以不填
  • 自动管理账户:第一次用“自动化”服务必须要建一个管理账户,也需要取个名字,比如“MyAutomationAccount”,这里我用了“automation4mcai”这个名字
  • 订阅:选择目标订阅
  • 区域:选择中国北部或东部

建完服务后,需要上传几个额外的脚本。

首先,打开服务,点击上面菜单里的“资产”,这里已经有了不少缺省的模块,都是PowerShell和Azure基础功能有关的。

在屏幕下方点击“导入模块”,上传 AzureBackupFunction.zip 这个文件。这个文件是在 QNDAzureBackup.zip 的基础上略作修改的。打开这个zip文件里面有一个文件夹和两个PowerShell文件。我修改了.PSM1这个文件里两行命令,让它可以在国内Azure上工作。

$dstContext = new-azurestoragecontext -StorageAccountName $backupStorageAccountName -StorageAccountKey (Get-AzureStorageKey -StorageAccountName $backupStorageAccountName).Primary -environment "AzureChinaCloud"

$srcContext = new-azurestoragecontext -StorageAccountName $srcStgAccountName -StorageAccountKey (Get-AzureStorageKey -StorageAccountName $srcStgAccountName).Primary -environment "AzureChinaCloud"

上传完成后,可以在“资产”列表里看到这个“AzureBackupFunction”模块。点击这个新的模块,确认下面的“活动”有“Backup-AzureVM”这个命令的名字。

然后,点击上面菜单里的“RUNBOOKS”,这里可以看到我新建的“BackupMoodleVM”这个名字。这里还有一个文件要上传,点击屏幕下面的“导入”,上传 Connect-AzureVM.ps1 这个文件。这个脚本内容是从这个博客帖子里得到的,但也略作修改,为了可以在国内Azure上工作。

Add-AzureAccount -Credential $AzureOrgIdCredential -environment "AzureChinaCloud" | Write-Verbose

上传完成后,可以开始写我们自己的脚本了。点击“BackupMoodleVM”,在上面的菜单选择“创作”,会进入“草稿”编辑器。粘贴一下脚本内容。

workflow BackupMoodleVM
{
param
(
[Parameter(Mandatory=$true)]
[String] $password
) # Set up variables
$AzureSubscriptionName = "CaiLang Subscription"
$AzureOrgId = "user@cailang.partner.onmschina.cn"
$AzurePassword = $password | ConvertTo-SecureString -AsPlainText -Force
$AzureOrgIdCredential = New-Object System.Management.Automation.PSCredential($AzureOrgId,$AzurePassword)
$ServiceName = "moodle-cloudservice"
$VMName = "moodlevm"
$StorageAccountName = "cailangstorage"
$backupContainerName = "vm-backup"

# Set up Azure connection by calling the Connect-Azure runbook
$Uri = Connect-AzureVM -AzureSubscriptionName $AzureSubscriptionName -AzureOrgIdCredential $AzureOrgIdCredential -serviceName $ServiceName -VMName $VMName # Stop Azure VM
Stop-AzureVM -ServiceName $ServiceName -Name $VMName -StayProvisioned # Backup Azure VM
Backup-AzureVM -serviceName $ServiceName -VMName $VMName -backupContainerName $backupContainerName -backupStorageAccountName $StorageAccountName –includeDataDisks # Start Azure VM
Start-AzureVM -ServiceName $ServiceName -Name $VMName
}

解释一下需要配置的对象。

  • AzureSubscriptionName:这个是虚机所在订阅的名字
  • AzureOrgId:这个是Azure的登陆用户名
  • ServiceName:这个是虚机挂靠的云服务名字
  • VMName:目标虚机的名字
  • StorageAccountName:用来备份虚机硬盘的存储账号
  • backupContainerName:用来备份虚机硬盘的容器名字

大家也可以根据自己的需求将这些对象都放到参数配置里,就像password那样,在运行时在输入。编辑完成后,点击屏幕下方的“测试”,确保脚本可以跑起来,最后点击“发布”。别忘了发布刚才导入的Connect-AzureVM脚本。

在运行时,我遇到以下的错误。这是来自于Connect-AzureVM脚本中尝试去那虚机的证书的操作,个人认为可以忽略这个错误,我备份的是Ubuntu系统。

Error: Get-AzureCertificate : Cannot validate argument on parameter 'Thumbprint'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At Connect-AzureVM:63 char:63
+
+ CategoryInfo : InvalidData: (:) [Get-AzureCertificate], ParameterBindingValidationException
+ FullyQualifiedErrorId :
ParameterArgumentValidationError,Microsoft.WindowsAzure.Commands.ServiceManagement.Certificates.GetAzureCertificate

之后就可以配置“计划日程”来定期备份虚机了。

如果你有任何疑问,欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。

本文转载自: https://blog.csdn.net/u014296016/article/details/44920687