排程自動開關機Azure VM,在離峰時段節省您的荷包 - Azure Automation
前言
本文介紹Azure Automation(自動化)服務的應用 - 排程開關機Azure VM,
主要是因為要幫客戶節省雲端成本,而他們的VM可以允許在非用戶使用期間(e.g. 晚上十點半~清晨六點半)關閉。
概念
- Automation Account - 自動化服務的帳戶
- Runbook - 相當於一個script檔,一個Automation Account可包含多個Runbook
-Runbook是以Windows Powershell或Windows Powershell Workflow為基礎,所有PS指令基本上都可以在Runbook上面使用。
-若application或service有API,Runbook也可以取用這些資源。 - 如何編輯我的Runbook?
- 利用Azure Portal去新刪修
- 在本地編輯完成後匯入至Azure Automation
限制
目前Automation服務只有在以下地區才有,服務若都在不同的地區,
仍可正常啟動,若靠近運用的Azure資源地區,會執行得比較快。
實作
- 建立Automation Account
登入Azure管理介面→自動化→建立自動化帳戶:
輸入帳戶名稱及建立的地區:
- 建立Runbook
左下角新增→自動化→RUNBOOK→快速建立→輸入RUNBOOK名稱,並建立在剛剛的Account底下:
- 編輯Runbook
點選欲編輯的Runbook→「製作」→在workflow中貼上VM開機的語法:
※Azure VM關機語法請將Start-AzureVM的指令換成Stop-AzureVM
※記得要代換以下語法的SubscriptionName & VMName & ServiceNameinlineScript {
$cred = Get-AutomationPSCredential -Name 'TaskCredential'
Add-AzureAccount -Credential $cred
Select-AzureSubscription -SubscriptionName "SubscriptionName"
Start-AzureVM -Name VMName -ServiceName ServiceName
}
- 完成編輯Runbook (關機語法請以此類推~)
- 加入認證
上述語法中Get-AutomationPSCredential的Name指定為「TaskCredential」,
因此我要新增一個認證(就是帳號密碼驗證),名稱為TaskCredential。
編輯Runbook畫面→管理→加入設定:
選擇要加入的設定類型:加入認證
定義認證:名稱請設定為Get-AutomationPSCredential參數指定的Name(名稱)
定義認證:輸入使用者帳號密碼
※注意:這邊請輸入Azure Active Directory使用者(也稱Azure Organization ID)的帳密
因為Automation服務就是用AzureAD內的身份去跑的,且不可使用Microsoft Live ID(會出現指定的subscription不存在之錯誤訊息),
若沒有此類帳號,請在Azure Active Directory服務新增一使用者。
- 測試Runbook (注意:測試是真的會跑!!!雖然它叫做「測試」,但如果測試會影響到線上服務的Runbook,請勿利用production環境測試。)
測試成功:
- 發行Runbook
(發行之後,不會立即執行此Runbook,後續可選擇立即執行、建立排程。當然也可繼續編輯此Runbook,
但注意一下這邊即使編輯後存檔,依然按發行,才會跑目前最新版的Runbook)
- 立即執行Runbook
發行後可按「開始」,可立即正式執行此Runbook
- 排程執行Runbook
點選Runbook→排程→連結至新排程:
設定排程名稱:(關機排程請以此類推~)
依需求設定排程時間:
※若要測試一次排程,至少要在目前時間的五分鐘後
排程啟動後會在「工作」頁箋留下紀錄:
費用
- 免費(Free Tier):工作執行時間小於500分鐘/月
- 基本(Basic Tier):工作執行時間大於500分鐘/月~無上限的使用時間。
- 免費升級基本層次,可以去Azure管理介面調整Automation Account的tier(調整規模功能)。
- 若使用多個不同地區的Automation Account,這些Job的執行時數是會相加的。
相關連結
== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==
留言與評論
本篇文章的留言功能已關閉!