﻿# 如何設定 Azure 虛擬機器 (VM) 在早上自動開機、晚上自動關機

在 Azure 上建立虛擬機器(VM)的時候，有個 **自動關機** (Auto-shutdown) 的功能可以非常便利的設定**每天定時關機**的時間，但是卻沒有 **自動開機** 的便利選項。今天這篇文章，我要來介紹一個超級簡單就可以設定完成 **自動開機** 的方法。

### 設定自動關機時間

設定自動關機真的是再簡單不過了，以下請自己看圖說故事：

![設定自動關機時間](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/6c9471185f161a9aa986-121773606-95ed3c00-cbaf-11eb-8b00-e467929d23a3.png)

> 注意：由於預設「自動關機」的設定是每天一個時間點，如果你想**設定的時間點**距離**現在的時間**小於 `30` 分鐘的話，那麼自動關機會直接跳過今天，明天的指定時間點才會真正幫你關機。([參考資訊](https://social.msdn.microsoft.com/Forums/azure/en-US/f3f130c8-8953-4c15-9443-bed4d249a247/azure-auto-shut-down-did-not-work?forum=WAVirtualMachinesforWindows&WT.mc_id=DT-MVP-4015686#58b8b2f5-46b2-43d5-ac85-d3be1bdc9244))

以下是關機前 30 分鐘會發出的通知信件內容：

![自動關機 (Auto-Shutdown) 30 分鐘前的通知信內容](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/7ef76e178978d72e784d-121815693-417ab700-ccaa-11eb-8c6b-aaa593ff9749.png)

### 設定自動開機時間

如果你要設定自動開機，最簡單的作法，應該就是透過 Automation 功能分類下的 Tasks 功能了！

1.  先點擊 **Add** 加入工作
    
    ![Azure VM / Automation / Tasks](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/350405190b699b4c8713-121773729-507d3e80-cbb0-11eb-817e-adc2d9a956c2.png)
    
2.  直接選擇一個既有的 **Start Virtual Machine** 範本：
    
    ![Select a template / Start Virtual Machine](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/89b17c6512cd385af441-121773773-a356f600-cbb0-11eb-8423-0260aa3f5267.png)
    
3.  這個 Authentication 步驟需要你設定兩個參數，用來通過對 VM 進行開機操作的身份驗證與授權檢查：
    
    -   Azure VM
        
        你需要對目前 VM 進行開機，就需要登入一個有開關機權限的帳號，這個精靈會全自動幫你設定到好，你只要按下 **Create** 登入即可。
        
    -   Office 365 Outlook
        
        因為自動開機可以設定發信通知，這裡要選擇一個 Office 365 的「寄件人」，通知信就會用這個人的身分寄出。一樣，你只要按下 **Create** 登入即可。
        
    
    ![Select a template / Authentication](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/b29bf1830c56519ec1d6-121774033-83283680-cbb2-11eb-9e68-38b3a66c9386.png)
    
4.  這個 Configuration 步驟，就直接將排程的設定填寫上去即可：
    
    ![Select a template / Configuration](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/0f07d16ecac17d8d55e2-121774249-20379f00-cbb4-11eb-9d60-0bf8751aee79.png)
    
    > 這裡的 **Interval** 其實是 **Frequency** 的數量，如果你 **Frequency** 選 `Day`，那麼 **Interval** 如果設定 `1` 的話，就代表「**每天一次**」執行這個工作。
    

大功告成！ 🎉

### 更專業的自動化腳本

其實上述步驟的背後，是幫你建立一個相對應的 [Azure Logic App](https://azure.microsoft.com/zh-tw/services/logic-apps/?WT.mc_id=DT-MVP-4015686) 應用程式，且該 **Logic App** 會自動建立在跟你的 VM 相同的**資源群組**下，你可以參考下圖的方式直接開啟 Logic App 應用程式。

![Open in Logic App](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/a0c3cbf6ab382f4536dd-121774347-ad7af380-cbb4-11eb-8eec-11e7c41001a2.png)

你可以在進入之後，可以點擊 **Run Trigger** 直接測試執行看看能不能自動把 VM 開機，也可以點擊 **Edit** 編輯 **Logic App** 執行流程，這裡你幾乎可以改成任何你想改的自動化內容，功能非常強大，但這就超出本文分享的範圍了，有興趣的朋友可以查看 [Azure Logic Apps 文件](https://learn.microsoft.com/zh-tw/azure/logic-apps/?WT.mc_id=DT-MVP-4015686)。

![Azure Logic Apps](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/8e41d55d550929b5e5da-121774589-a1dbfc80-cbb5-11eb-82b7-5296bb9baa7b.png)

### 後記

我在查找各種「自動開關機」的自動化方法時，發現網路上已經可以看到無數種不同的自動開關機方法，有些文章上的截圖也跟現今的 Azure Portal 有點差異。

另一方面，若你使用 [Azure Automation](https://learn.microsoft.com/zh-tw/azure/automation/automation-intro?WT.mc_id=DT-MVP-4015686) 服務來建立自動化，對**非全域管理員**的人來說，相對的會比較容易遇到權限不足的問題，因為建立 [Run As account](https://learn.microsoft.com/zh-tw/azure/automation/manage-runas-account?WT.mc_id=DT-MVP-4015686) 有一些權限上的限制，詳情請見 [Azure Automation account authentication overview](https://learn.microsoft.com/en-us/azure/automation/automation-security-overview#permissions) 的 [Run As account permissions](https://learn.microsoft.com/en-us/azure/automation/automation-security-overview#permissions) 章節。

無論如何，本文介紹的「自動開機」方法，應該是眾多方法中最為簡單的了！ 👍

### 相關連結

-   [Auto Shutdown and Auto Start an Azure VM - YouTube](https://www.youtube.com/watch?v=2IoX7IxmkpU)
-   [Start/Stop VMs during off-hours overview](https://learn.microsoft.com/en-us/azure/automation/automation-solution-vm-management?WT.mc_id=DT-MVP-4015686) (Azure Automation)
-   [How To Start VM Automatically In Azure](https://www.c-sharpcorner.com/article/how-to-start-vm-automatically-in-azure/)
-   [Azure Automation documentation](https://learn.microsoft.com/en-us/azure/automation/?WT.mc_id=DT-MVP-4015686)
