标签:
在上述基本准备工作做完后,wo们看看如何实现利用Azure Automation实现定时自动开关机的操作,这种场景非常适合Dev/Test环境,因为Azure的虚拟机是按照分钟收费的,所以我们可以在开发测试人员上班的时候打开虚拟机,而在下班,周末的时候关闭虚拟机,从而节约成本,从另外一个层面来讲,也是体现云的灵活性。
首先讲一下设计的基本原则,如何做能让你的自动化脚本更灵活,更具有可移植性:
?
?
?
?
?
?
?
workflow Stop-AzureVMLib
{
param (
[Parameter(Mandatory=$false)]
[String] $ServiceName
)
?
# Returns strings with status messages
[OutputType([String])]
?
Body
}
?
5. 现在我们设计一个Stop-VM的可以在实际环境中使用的runbook,实现以下几个目标:
?
6 . 使用Azure的用户名密码进行认证,相关的orgid,密码我们都保存在资产中,通过动态获得,而不需要修改代码,通过Get-AutomationVariable得到的数据都可以在添加资产中添加变量获得:
#资产中定义的用户名和订阅名
$AzureCredentialAssetName = ‘automationuser@XXXX.cn‘
$AzureSubscriptionIdAssetName = ‘automationsubid‘
?
# 得到资产中定义的用户名密码和订阅名称
$Cred = Get-AutomationPSCredential -Name $AzureCredentialAssetName
$SubId = Get-AutomationVariable -Name $AzureSubscriptionIdAssetName
?
#获得需要关闭的虚拟机列表,以逗号分隔
$vmconfiglist = Get-AutomationVariable -Name ‘vmnamelist‘
?
$vmlist = $vmconfiglist -split ","
?
#获得认证,添加订阅进行后续操作
$null = Add-AzureAccount -Credential $Cred -Environment AzureChinaCloud -ErrorAction Stop
???? ?
$null = Select-AzureSubscription -SubscriptionId $SubId -ErrorAction Stop
?
7. 那么如果使用证书的方式,如何获得认证昵?
???? $AzureSubscriptionIdAssetName = ‘automationsubid‘
$subscriptionNameAssetname = ‘azuresubscriptionname‘
#获得订阅ID和订阅名称
$SubId = Get-AutomationVariable -Name $AzureSubscriptionIdAssetName
$subscriptionName = Get-AutomationVariable -Name $subscriptionNameAssetname
#获得认证名称和证书
$certificateName = Get-AutomationVariable -Name "mycertificateName"
$certificate = Get-AutomationCertificate -Name $certificateName
#根据证书这是当前订阅
Set-AzureSubscription -SubscriptionName $subscriptionName -SubscriptionId $SubId -Certificate $certificate -Environment AzureChinaCloud -ErrorAction Stop
Select-AzureSubscription -SubscriptionId $SubId -ErrorAction Stop
8. 剩下的就是根据虚拟机机器名称得到虚拟机进行停止虚拟机的操作了,所有的源代码我都放在了Github,请分别下载测试:
通过用户名密码验证方式停止虚拟机:
https://github.com/kingliantop/azurelabs/blob/master/automation/stop-azurevms.ps1
通过用户名密码验证方式启动虚拟机:
https://github.com/kingliantop/azurelabs/blob/master/automation/start-azurevms.ps1
通过证书方式停止虚拟机:
https://github.com/kingliantop/azurelabs/blob/master/automation/stop-azurevmswithcert.ps1
通过证书方式启动虚拟机:
https://github.com/kingliantop/azurelabs/blob/master/automation/start-azurevmswithcert.ps1
9. runbook编辑完成,点击发布正式发布该runbook,但这个时候这些脚本不会自动运行,需要你设置定时运行方式,选择runbook中的计划日程,定义了什么时候运行这些脚本, 选择链接到新计划:
10. 输入计划的名称,设置每天定时关机的计划,你可以看到目前的设置选项中到小时级,或者每天,但没有工作日或者周末定义,需要自己写代码实现,具体实现请参考代码。
?
11. 每个runbook都需要设置加护日程,通过这种方式,你就可以实现早上开机,晚上关机,周末不开关机等操作。
利用Azure Automation实现云端自动化运维(4)
标签:
原文地址:http://www.cnblogs.com/cloudapps/p/5498464.html