將啟動/停止 VM v2 部署至 Azure 訂用帳戶

請依序執行本文中的步驟,以安裝啟動/停止 VM v2 功能。 完成安裝程序之後,請設定排程以根據您的需求進行自訂。

權限考量

在部署之前和期間,請考量下列事項:

  • 此解決方案可讓具有啟動/停止 v2 部署適當角色型存取控制 (RBAC) 權限的使用者,在啟動/停止 VMs v2 的範圍內新增、移除和管理虛擬機器的排程。 這是依照設計的行為。 實務上來說,這表示如果使用者沒有虛擬機器的明確權限,但有可修改啟動/停止 v2 解決方案以管理虛擬機器的權限,則仍可在該虛擬機器上建立啟動、停止和自動停止作業。

  • 只要使用者有權存取啟動/停止 v2 解決方案,都可以查看啟動/停止 v2 應用程式所使用的 Application Insights 執行個體中儲存的成本、節省效益、作業歷程記錄和其他資料。

  • 因此,管理啟動/停止 v2 解決方案時,您可以考慮將啟動/停止 v2 解決方案的權限提供給使用者,特別是在他們沒有直接修改目標虛擬機器權限的情況下。

部署功能

部署是從啟動/停止 VMs v2 GitHub 組織起始。 雖然這項功能可讓您從訂閱內的單一部署,跨所有資源群組來管理訂閱中所有 VM,您也可以根據組織的作業模型或需求來安裝其他執行個體。 您也可以將其設定為跨多個訂閱集中管理 VM。

為了簡化管理和移除作業,建議您將啟動/停止 VM v2 部署至專用資源群組。

注意

目前,此解決方案不支援指定現有的儲存體帳戶或 Application Insights 資源。

注意

函式應用程式和儲存體帳戶的命名格式已變更。 為了保證全域唯一性,系統現會將隨機唯一字串附加至這些資源的名稱。

  1. 開啟瀏覽器,並瀏覽至啟動/停止 VM v2 GitHub 組織

  2. 根據建立 Azure VM 的 Azure 雲端環境,選取部署選項。

  3. 如果出現提示,請登入 Azure 入口網站

  4. 從下拉式方塊中選擇適當的方案。 選擇區域備援方案 (Start/StopV2-AZ) 時,您必須在下列其中一個區域中建立部署:

    • 澳大利亞東部
    • 巴西南部
    • 加拿大中部
    • 美國中部
    • 美國東部
    • 美國東部 2
    • 法國中部
    • 德國中西部
    • 日本東部
    • 北歐
    • 東南亞
    • 英國南部
    • 西歐
    • 美國西部 2
    • 美國西部 3
  5. 選取 [建立],這樣會開啟 Azure 入口網站中的自訂 Azure Resource Manager 部署頁面。

  6. 輸入下列值:

    名稱
    區域 為新資源,選取您附近的區域。
    資源群組名稱 指定資源群組名稱,以包含啟動/停止 VM 的個別資源。
    資源群組區域 指定資源群組的區域。 例如,美國中部
    Azure Function App 名稱 輸入在 URL 路徑中有效的名稱。 您鍵入的名稱會經過驗證,確定其在 Azure Functions 中是唯一。
    Application Insights 名稱 指定 Application Insights 執行個體的名稱,以保存啟動/停止 VM 的分析。
    Application Insights 區域 指定 Application Insights 執行個體的區域。
    儲存體帳戶名稱 指定 Azure 儲存體帳戶名稱,以儲存啟動/停止 VM 的執行遙測。
    電子郵件地址 指定一或多個電子郵件地址來接收狀態通知,並以逗號 (,) 分隔。

    Start/Stop VMs template deployment configuration

  7. 選取頁面底部的 [檢閱 + 建立]

  8. 選取 [建立] 以開始部署。

  9. 從畫面頂端選取鈴鐺圖示 (通知),以查看部署狀態。 您應該會看到 [部署進行中]。 請等候部署完成。

  10. 在 [通知] 窗格中選取 [移至資源群組]。 您應該會看到類似下方的畫面:

    Start/Stop VMs template deployment resource list

注意

我們會收集作業和活動訊號遙測,以在您連絡支援小組進行任何疑難排解時,提供更妥善的協助。 我們也會收集虛擬機器事件歷程記錄,以驗證服務在虛擬機器上的運作時間,以及虛擬機器經過多久延遲時間,以判斷服務的效率。

啟用多個訂閱

啟動/停止部署完成之後,請執行下列步驟來啟用啟動/停止 VM v2,以跨多個訂閱採取動作。

  1. 複製您在部署期間指定的 Azure Function App 名稱值。

  2. 在 Azure 入口網站中,瀏覽至您的次要訂用帳戶。

  3. 選取 [存取控制 (IAM)]。

  4. 選取 [新增]> [新增角色指派],開啟 [新增角色指派] 頁面。

  5. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 參與者
    存取權指派對象 使用者、群組或服務主體
    成員 <您的 Azure Function 應用程式名稱>

    Screenshot showing Add role assignment page in Azure portal.

設定排程概觀

若要管理自動化方法來控制 VM 的啟動和停止,您可以根據需求設定一或多個隨附的邏輯應用程式。

  • 已排程 - 啟動和停止動作是以您針對 Azure Resource Manager 和傳統 VM 指定的排程為基礎。 ststv2_vms_Scheduled_startststv2_vms_Scheduled_stop 可設定排定的開始和停止。

  • Sequenced - 啟動和停止動作會以具有預先定義排序標記的目標 VM 為依據。 僅支援兩個具名標籤 - sequencestartsequencestopststv2_vms_Sequenced_startststv2_vms_Sequenced_stop 可設定循序的開始和停止。

    注意

    此案例僅支援 Azure Resource Manager VM。

  • AutoStop - 此功能僅用於針對 Azure Resource Manager 和傳統 VM,根據其 CPU 使用率來執行停止動作。 此功能也可作為排程型「採取動作」,以在 VM 上建立警示,並根據條件觸發警示來執行停止動作。ststv2_vms_AutoStop 可設定自動停止功能。

如果您需要其他排程,您可以使用 Azure 入口網站中的 [複製] 選項,複製其中一個提供的 Logic Apps。

Select the Clone option to duplicate a logic app

排程的開始和停止案例

執行下列步驟來設定 Azure Resource Manager 和傳統 VM 的排程啟動及停止動作。 例如,您可以設定 ststv2_vms_Scheduled_start 排程,在上午進公司時啟動訂閱中的所有 VM,並根據 ststv2_vms_Scheduled_stop 排程,在下午下班時停止所有 VM。

支援將邏輯應用程式設定為只啟動 VM。

針對每個案例,您可以針對一或多個訂閱、單一或多個資源群組設定動作,並指定包含或排除清單中的一或多個 VM。 這些項目無法在相同的邏輯應用程式中一併指定。

  1. 登入 Azure 入口網站,然後瀏覽至 [邏輯應用程式]

  2. 在 [邏輯應用程式] 清單中,選取 ststv2_vms_Scheduled_start 以設定排程開始。 若要設定排程停止,請選取 ststv2_vms_Scheduled_stop

  3. 從左側窗格中選取 [邏輯應用程式設計工具]

  4. [邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務

    Configure the recurrence frequency for logic app

  5. 在設計工具窗格中,選取 [函式 Try ] 以設定目標設定。 在要求本文中,如果您想要管理訂閱中所有資源群組的 VM,請修改要求本文,如下列範例所示。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "ExcludedVMLists": [],
        "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/"
        ]
     }
    }
    

    subscriptions 陣列中指定多個訂閱,並以逗號分隔每個值,如下列範例所示。

    "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/"
        ]
    

    在要求本文中,如果您想要管理特定資源群組的 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一或多個資源群組。

    此範例也會示範如何排除虛擬機器。 您可以指定 VM 資源路徑或透過萬用字元來排除 VM。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/"
         ],
        "ResourceGroups": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/"
        ],
        "ExcludedVMLists": [
         "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1"
        ]
      }
    }
    

    此時,除了名稱開頭為 Az 和 Bz 的 VM 以外,兩個訂閱中的所有 VM 都會執行動作。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "ExcludedVMLists": [“Az*”,“Bz*”],
       "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/"
    
        ]
      }
    }
    

    在要求本文中,如果您想要管理訂閱中的特定一組 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個 VM。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "ExcludedVMLists": [],
        "VMLists": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1",
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg3/providers/Microsoft.Compute/virtualMachines/vm2",
          "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30"
    
        ]
      }
    }
    
  6. 在邏輯應用程式的概觀窗格中,選取 [啟用]

循序開始和停止案例

如果環境是分散式應用程式架構,其中多部 Azure Resource Manager VM 上包含兩個或多個元件,支援元件的循序啟動和停止順序是非常重要的。 請先確定您已將 sequencestartsequencestop 標記套用至目標 VM,如概觀頁面上所述,再設定此案例。

  1. 在 [邏輯應用程式] 清單中,選取 ststv2_vms_Scheduled_start 以設定排程開始。 若要設定循序停止,請選取 ststv2_vms_Sequenced_stop

  2. 從左側窗格中選取 [邏輯應用程式設計工具]

  3. [邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務

    Configure the recurrence frequency for logic app

  4. 在設計工具窗格中,選取 [Function-Try] 以設定目標設定,然後在頂端功能表中選取 [</> 程式碼檢視] 按鈕以編輯 [Function-Try] 元素的程式碼。 在要求本文中,如果您想要管理訂閱中所有資源群組的 VM,請修改要求本文,如下列範例所示。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "ExcludedVMLists": [],
        "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/"
        ]
     },
       "Sequenced": true
    }
    

    subscriptions 陣列中指定多個訂閱,並以逗號分隔每個值,如下列範例所示。

    "Subscriptions": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/"
        ]
    

    在要求本文中,如果您想要管理特定資源群組的 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個資源群組。

    相較於使用萬用字元的排程啟動/停止範例,此範例也會示範如何依其資源路徑排除虛擬機器。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "Subscriptions":[
          "/subscriptions/12345678-1234-5678-1234-123456781234/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/"
        ],
        "ResourceGroups": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/",
          "/subscriptions/11111111-0000-1111-2222-444444444444/resourceGroups/rg2/"
        ],
        "ExcludedVMLists": [
         "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1"
        ]
      },
       "Sequenced": true
    }
    

    在要求本文中,如果您想要管理訂閱中的特定一組 VM,請修改要求本文,如下列範例所示。 指定的每個資源路徑都必須以逗號分隔。 如有需要,您可以指定一個 VM。

    {
      "Action": "start",
      "EnableClassic": false,
      "RequestScopes": {
        "ExcludedVMLists": [],
        "VMLists": [
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1",
          "/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm2",
          "/subscriptions/11111111-0000-1111-2222-444444444444/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 監視器中的計量警示

  1. 在 [邏輯應用程式] 清單中,選取 ststv2_vms_AutoStop 以設定自動停止。

  2. 從左側窗格中選取 [邏輯應用程式設計工具]

  3. [邏輯應用程式設計工具] 出現之後,在設計工具窗格中,選取 [定期] 以設定邏輯應用程式排程。 若要了解特定的定期選項,請參閱排程週期性任務

    Configure the recurrence frequency for logic app

  4. 在設計工具窗格中,選取 [函式 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 一文。