將啟動/停止 VM v2 部署至 Azure 訂用帳戶
請依序執行本文中的步驟,以安裝啟動/停止 VM v2 功能。 完成安裝程序之後,請設定排程以根據您的需求進行自訂。
權限和原則考量
在部署之前和期間,請考量下列事項:
此解決方案可讓具有啟動/停止 v2 部署適當角色型存取控制 (RBAC) 權限的使用者,在啟動/停止 VMs v2 的範圍內新增、移除和管理虛擬機器的排程。 這是依照設計的行為。 實務上來說,這表示如果使用者沒有虛擬機器的明確權限,但有可修改啟動/停止 v2 解決方案以管理虛擬機器的權限,則仍可在該虛擬機器上建立啟動、停止和自動停止作業。
只要使用者有權存取啟動/停止 v2 解決方案,都可以查看啟動/停止 v2 應用程式所使用的 Application Insights 執行個體中儲存的成本、節省效益、作業歷程記錄和其他資料。
因此,管理啟動/停止 v2 解決方案時,您可以考慮將啟動/停止 v2 解決方案的權限提供給使用者,特別是在他們沒有直接修改目標虛擬機器權限的情況下。
當您將 Start/Stop v2 解決方案部署到新的或現有的資源群組時,名為 SolutionName 且值為 StartStopV2 的標籤會新增至資源群組以及其由 Start/Stop v2 部署的資源中。 這些資源上的任何其他標籤都會移除。 如果您具有 Azure 原則拒絕根據資源標籤進行管理作業,則必須允許針對僅包含此標籤的資源進行管理作業。
部署功能
部署是從啟動/停止 VMs v2 GitHub 組織起始。 雖然這項功能可讓您從訂閱內的單一部署,跨所有資源群組來管理訂閱中所有 VM,您也可以根據組織的作業模型或需求來安裝其他執行個體。 您也可以將其設定為跨多個訂閱集中管理 VM。
為了簡化管理和移除作業,建議您將啟動/停止 VM v2 部署至專用資源群組。
注意
目前,此解決方案不支援指定現有的儲存體帳戶或 Application Insights 資源。
注意
函式應用程式和儲存體帳戶的命名格式已變更。 為了保證全域唯一性,系統現會將隨機唯一字串附加至這些資源的名稱。
開啟瀏覽器,並瀏覽至啟動/停止 VM v2 GitHub 組織。
根據建立 Azure VM 的 Azure 雲端環境,選取部署選項。
如果出現提示,請登入 Azure 入口網站。
從下拉式方塊中選擇適當的方案。 選擇區域備援方案 (Start/StopV2-AZ) 時,您必須在下列其中一個區域中建立部署:
- 澳大利亞東部
- 巴西南部
- 加拿大中部
- 美國中部
- 美國東部
- 美國東部 2
- 法國中部
- 德國中西部
- 日本東部
- 北歐
- 東南亞
- 英國南部
- 西歐
- 美國西部 2
- 美國西部 3
選取 [建立],這樣會開啟 Azure 入口網站中的自訂 Azure Resource Manager 部署頁面。
輸入下列值:
名稱 值 區域 為新資源,選取您附近的區域。 資源群組名稱 指定資源群組名稱,以包含啟動/停止 VM 的個別資源。 資源群組區域 指定資源群組的區域。 例如,美國中部。 Azure Function App 名稱 輸入在 URL 路徑中有效的名稱。 您鍵入的名稱會經過驗證,確定其在 Azure Functions 中是唯一。 Application Insights 名稱 指定 Application Insights 執行個體的名稱,以保存啟動/停止 VM 的分析。 Application Insights 區域 指定 Application Insights 執行個體的區域。 儲存體帳戶名稱 指定 Azure 儲存體帳戶名稱,以儲存啟動/停止 VM 的執行遙測。 電子郵件地址 指定一或多個電子郵件地址來接收狀態通知,並以逗號 (,) 分隔。 選取頁面底部的 [檢閱 + 建立]。
選取 [建立] 以開始部署。
從畫面頂端選取鈴鐺圖示 (通知),以查看部署狀態。 您應該會看到 [部署進行中]。 請等候部署完成。
在 [通知] 窗格中選取 [移至資源群組]。 您應該會看到類似下方的畫面:
注意
我們會收集作業和活動訊號遙測,以在您連絡支援小組進行任何疑難排解時,提供更妥善的協助。 我們也會收集虛擬機器事件歷程記錄,以驗證服務在虛擬機器上的運作時間,以及虛擬機器經過多久延遲時間,以判斷服務的效率。
啟用多個訂閱
啟動/停止部署完成之後,請執行下列步驟來啟用啟動/停止 VM v2,以跨多個訂閱採取動作。
複製您在部署期間指定的 Azure Function App 名稱值。
在 Azure 入口網站中,瀏覽至您的次要訂用帳戶。
選取 [存取控制 (IAM)]。
選取 [新增] > [新增角色指派],開啟 [新增角色指派] 頁面。
指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色。
設定 值 角色 參與者 存取權指派對象 使用者、群組或服務主體 成員 <您的 Azure Function 應用程式名稱>
設定排程概觀
若要管理自動化方法來控制 VM 的啟動和停止,您可以根據需求設定一或多個隨附的邏輯應用程式。
已排程 - 啟動和停止動作是以您針對 Azure Resource Manager 和傳統 VM 指定的排程為基礎。 ststv2_vms_Scheduled_start 和 ststv2_vms_Scheduled_stop 可設定排定的開始和停止。
Sequenced - 啟動和停止動作會以具有預先定義排序標記的目標 VM 為依據。 僅支援兩個具名標籤 - sequencestart 和 sequencestop。 ststv2_vms_Sequenced_start 和 ststv2_vms_Sequenced_stop 可設定循序的開始和停止。
注意
此案例僅支援 Azure Resource Manager VM。
AutoStop - 此功能僅用於針對 Azure Resource Manager 和傳統 VM,根據其 CPU 使用率來執行停止動作。 此功能也可作為排程型「採取動作」,以在 VM 上建立警示,並根據條件觸發警示來執行停止動作。ststv2_vms_AutoStop 可設定自動停止功能。
如果您需要其他排程,您可以使用 Azure 入口網站中的 [複製] 選項,複製其中一個提供的 Logic Apps。
排程的開始和停止案例
執行下列步驟來設定 Azure Resource Manager 和傳統 VM 的排程啟動及停止動作。 例如,您可以設定 ststv2_vms_Scheduled_start 排程,在上午進公司時啟動訂閱中的所有 VM,並根據 ststv2_vms_Scheduled_stop 排程,在下午下班時停止所有 VM。
支援將邏輯應用程式設定為只啟動 VM。
針對每個案例,您可以針對一或多個訂閱、單一或多個資源群組設定動作,並指定包含或排除清單中的一或多個 VM。 這些項目無法在相同的邏輯應用程式中一併指定。
登入 Azure 入口網站,然後瀏覽至 [邏輯應用程式]。
在 [邏輯應用程式] 清單中,選取 ststv2_vms_Scheduled_start 以設定排程開始。 若要設定排程停止,請選取 ststv2_vms_Scheduled_stop。
從左側窗格中選取 [邏輯應用程式設計工具]。
[邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務。
注意
如果沒有提供第一次週期的開始日期和時間,當您儲存邏輯應用程式時,就會立即執行週期,這可能會導致 VM 在排程執行之前啟動或停止。
在設計工具窗格中,選取 [函式 Try ] 以設定目標設定。 在要求本文中,如果您想要管理訂閱中所有資源群組的 VM,請修改要求本文,如下列範例所示。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/" ] } }
在
subscriptions
陣列中指定多個訂閱,並以逗號分隔每個值,如下列範例所示。"Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ]
在要求本文中,如果您想要管理特定資源群組的 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一或多個資源群組。
此範例也會示範如何排除虛擬機器。 您可以指定 VM 資源路徑或透過萬用字元來排除 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ], "ResourceGroups": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
此時,除了名稱開頭為 Az 和 Bz 的 VM 以外,兩個訂閱中的所有 VM 都會執行動作。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [“Az*”,“Bz*”], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ] } }
在要求本文中,如果您想要管理訂閱中的特定一組 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg3/providers/Microsoft.Compute/virtualMachines/vm2", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] } }
在邏輯應用程式的概觀窗格中,選取 [啟用]。
循序開始和停止案例
如果環境是分散式應用程式架構,其中多部 Azure Resource Manager VM 上包含兩個或多個元件,支援元件的循序啟動和停止順序是非常重要的。 請先確定您已將 sequencestart 和 sequencestop 標記套用至目標 VM,如概觀頁面上所述,再設定此案例。
在 [邏輯應用程式] 清單中,選取 ststv2_vms_Scheduled_start 以設定排程開始。 若要設定循序停止,請選取 ststv2_vms_Sequenced_stop。
從左側窗格中選取 [邏輯應用程式設計工具]。
[邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務。
注意
如果沒有提供第一次週期的開始日期和時間,當您儲存邏輯應用程式時,就會立即執行週期,這可能會導致 VM 在排程執行之前啟動或停止。
在設計工具窗格中,選取 [Function-Try] 以設定目標設定,然後在頂端功能表中選取 [</> 程式碼檢視] 按鈕以編輯 [Function-Try] 元素的程式碼。 在要求本文中,如果您想要管理訂閱中所有資源群組的 VM,請修改要求本文,如下列範例所示。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/" ] }, "Sequenced": true }
在
subscriptions
陣列中指定多個訂閱,並以逗號分隔每個值,如下列範例所示。"Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ]
在要求本文中,如果您想要管理特定資源群組的 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個資源群組。
相較於使用萬用字元的排程啟動/停止範例,此範例也會示範如何依其資源路徑排除虛擬機器。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions":[ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ], "ResourceGroups": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] }, "Sequenced": true }
在要求本文中,如果您想要管理訂閱中的特定一組 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個 VM。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm2", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] }, "Sequenced": true }
自動停止案例
啟動/停止 VM v2 可評估非尖峰期間 (例如下班時間) 未使用的機器,並在處理器使用率低於指定百分比時自動關閉,以協助管理訂閱中的 Azure Resource Manager 與傳統 VM 執行成本。
您可以自訂要求本文中的下列計量警示屬性:
- AutoStop_MetricName
- AutoStop_Condition
- AutoStop_Threshold
- AutoStop_Description
- AutoStop_Frequency
- AutoStop_Severity
- AutoStop_Threshold
- AutoStop_TimeAggregationOperator
- AutoStop_TimeWindow
若要深入了解 Azure 監視器計量警示的運作方式,以及如何設定計量警示,請參閱 Azure 監視器中的計量警示。
在 [邏輯應用程式] 清單中,選取 ststv2_vms_AutoStop 以設定自動停止。
從左側窗格中選取 [邏輯應用程式設計工具]。
[邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務。
在設計工具窗格中,選取 [函式 Try ] 以設定目標設定。 在要求本文中,如果您想要管理訂閱中所有資源群組的 VM,請修改要求本文,如下列範例所示。
{ "Action": "stop", "EnableClassic": false, "AutoStop_MetricName": "Percentage CPU", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "RequestScopes":{ "Subscriptions":[ "/subscriptions/12345678-1111-2222-3333-1234567891234/", "/subscriptions/12345678-2222-4444-5555-1234567891234/" ], "ExcludedVMLists":[] } }
在要求本文中,如果您想要管理特定資源群組的 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個資源群組。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "ResourceGroups": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroupsvmrg2/", "/subscriptions/12345678-2222-4444-5555-1234567891234/resourceGroups/VMHostingRG/" ] } }
在要求本文中,如果您想要管理訂閱中的特定一組 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個 VM。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/rg3/providers/Microsoft.ClassicCompute/virtualMachines/Clasyvm11", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
VM 標籤
您也可以透過 VM 本身的設定標記來包含或排除特定 VM,使其無法啟動和停止動作。 若要新增標記,請瀏覽至特定 VM,從左側功能表中選取 [標記],然後新增名為 ssv2excludevm
的標記。 若要從啟動或停止動作中排除此 VM,請將這個新標記的值設定為 true
。 若要在動作中包含 VM,請將值設定為 false
。 這可讓您排除特定 VM,而不需在承載組態中更新 ExcludedVMLists
。
下一步
若要了解如何監視由啟動/停止 VM v2 所管理的 Azure VM 狀態,並執行其他管理工作,請參閱管理啟動/停止 VM 一文。