排程自動開關機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?
    1. 利用Azure Portal去新刪修
    2. 在本地編輯完成後匯入至Azure Automation

限制

目前Automation服務只有在以下地區才有,服務若都在不同的地區,
仍可正常啟動,若靠近運用的Azure資源地區,會執行得比較快。

  • 支援的地區(7 regions):
    image

實作

  1. 建立Automation Account
    登入Azure管理介面→自動化→建立自動化帳戶:
    image
    輸入帳戶名稱及建立的地區:
    image
  2. 建立Runbook
    左下角新增→自動化→RUNBOOK→快速建立→輸入RUNBOOK名稱,並建立在剛剛的Account底下:
    image

    image
  3. 編輯Runbook
    點選欲編輯的Runbook→「製作」→在workflow中貼上VM開機的語法:
    ※Azure VM關機語法請將Start-AzureVM的指令換成Stop-AzureVM
    ※記得要代換以下語法的SubscriptionName & VMName & ServiceName
    inlineScript {
            $cred = Get-AutomationPSCredential -Name 'TaskCredential'
            Add-AzureAccount -Credential $cred
            Select-AzureSubscription -SubscriptionName "SubscriptionName"
            Start-AzureVM -Name VMName -ServiceName ServiceName
    }
  4. 完成編輯Runbook (關機語法請以此類推~)
     image
  5. 加入認證
    上述語法中Get-AutomationPSCredential的Name指定為「TaskCredential」,
    因此我要新增一個認證(就是帳號密碼驗證),名稱為TaskCredential。

    編輯Runbook畫面→管理→加入設定:
    image
    選擇要加入的設定類型:加入認證
    image
    定義認證:名稱請設定為Get-AutomationPSCredential參數指定的Name(名稱)
    image
    定義認證:輸入使用者帳號密碼
    image
    ※注意:這邊請輸入Azure Active Directory使用者(也稱Azure Organization ID)的帳密
    因為Automation服務就是用AzureAD內的身份去跑的,且不可使用Microsoft Live ID(會出現指定的subscription不存在之錯誤訊息),
    若沒有此類帳號,請在Azure Active Directory服務新增一使用者。
  6. 測試Runbook (注意:測試是真的會跑!!!雖然它叫做「測試」,但如果測試會影響到線上服務的Runbook,請勿利用production環境測試。)
     
    image
    測試成功:
    image
  7. 發行Runbook
    (發行之後,不會立即執行此Runbook,後續可選擇立即執行、建立排程。當然也可繼續編輯此Runbook,
    但注意一下這邊即使編輯後存檔,依然按發行,才會跑目前最新版的Runbook)

    image
  8. 立即執行Runbook
    發行後可按「開始」,可立即正式執行此Runbook
    image 
  9. 排程執行Runbook
    點選Runbook→排程→連結至新排程:
    image
    設定排程名稱:(關機排程請以此類推~)
    image
    依需求設定排程時間:
    image 
    ※若要測試一次排程,至少要在目前時間的五分鐘後
    排程啟動後會在「工作」頁箋留下紀錄:
    image 

費用

以東南亞為例,費用如下圖:
image 

  1. 免費(Free Tier):工作執行時間小於500分鐘/月
  2. 基本(Basic Tier):工作執行時間大於500分鐘/月~無上限的使用時間。
  • 免費升級基本層次,可以去Azure管理介面調整Automation Account的tier(調整規模功能)。
  • 若使用多個不同地區的Automation Account,這些Job的執行時數是會相加的。

相關連結

 

== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

Loading