共用方式為


啟用 Azure 自動化狀態設定

注意

Azure 自動化 狀態設定 將於 2027 年 9 月 30 日淘汰,請依該日期轉換至 Azure 機器組態。 如需詳細資訊,請參閱 部落格文章 公告。 Azure Machine Configuration 服務結合 DSC 延伸模組、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 Azure Machine Configuration 也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。

警告

Azure 自動化 DSC for Linux 已於 2023 年 9 月 30 日淘汰。 如需詳細資訊,請參閱公告

本文說明如何使用 Azure 自動化 狀態設定 來設定機器以進行管理。 如需此服務的詳細資料,請參閱 Azure 自動化狀態設定概觀

啟用 Azure VM

「Azure 自動化狀態設定」可讓您使用 Azure 入口網站、Azure Resource Manager 範本或 PowerShell,輕鬆啟用 Azure VM 來支援組態管理。 Azure VM Desired 狀態設定 擴充功能會自動向 Azure 自動化 狀態設定 註冊 VM。 因為 Azure 擴充以非同步方式執行,檢查 VM 設定的狀態中提供追蹤進度的步驟。

注意

將 DSC 部署到 Linux 節點時會使用 /tmp 資料夾。 系統會先暫時下載 nxautomation 之類的模組來驗證,然後才安裝到適當的位置。 為了確保模組正確安裝,適用於 Linux 的 Log Analytics 代理程式需要 /tmp 資料夾的讀取/寫入權限。 適用於 Linux 的 Log Analytics 代理程式以 omsagent 使用者身分執行。 若要將>寫入權限授與 omsagent 使用者,請執行 setfacl -m u:omsagent:rwx /tmp 命令。

使用 Azure 入口網站啟用 VM

若要透過 Azure 入口網站啟用 Azure VM 來支援「狀態設定」:

  1. 瀏覽至您要在其中啟用 VM 的 Azure 自動化帳戶。
  2. 在 [狀態設定] 頁面上,選取 [節點] 索引卷標,然後選取 [新增]。
  3. 選擇要啟用的 VM。
  4. 如果計算機未安裝 PowerShell 所需的狀態延伸模組,且電源狀態正在執行,請選取 [ 連線]。
  5. 在 [註冊] 下,輸入您的使用案例所需的 PowerShell DSC Local Configuration Manager 值。 (選擇性) 您可以輸入要指派給 VM 的節點設定。

啟用 VM

使用 Azure Resource Manager 範本啟用 VM

您可以使用 Azure Resource Manager 範本來安裝和啟用 VM,以支援「狀態設定」。 如需可啟用現有 VM 來支援「狀態設定」的範本範例,請參閱由 Desired State Configuration 服務管理的伺服器。 如果您要管理虛擬機擴展集,請參閱 Azure 自動化 所管理的虛擬機擴展集組態中的範例範本。

使用 PowerShell 啟用機器

您可以在 PowerShell 中使用 Register-AzAutomationDscNode Cmdlet,以啟用 VM 來支援「狀態設定」。

注意

Register-AzAutomationDscNode Cmdlet 只會觸發 Windows 擴充,所以目前僅針對執行 Windows 的機器來實作。

跨 Azure 訂用帳戶來註冊 VM

若要從其他 Azure 訂用帳戶來註冊 VM,最佳方式是在 Azure Resource Manager 部署範本中使用 DSC 擴充。 Azure Resource Manager 範本中的 Desired State Configuration 擴充中提供範例。

使用 DSC 中繼設定來註冊混合式機器

您可以透過 DSC 中繼設定,安全地為 Azure 自動化帳戶啟用機器。 DSC 中實作的通訊協定會使用中繼設定中的資訊來驗證 Azure 自動化狀態設定。 節點會透過註冊 URL 向伺服器註冊,並使用註冊金鑰進行驗證。 在註冊期間,DSC 節點和 DSC 服務會交涉唯一憑證,讓節點用於驗證註冊後的伺服器。 此流程可避免已啟用的節點彼此模擬,例如節點遭到入侵且具有惡意行為。 註冊之後,註冊金鑰不會再次用於驗證,而且會從節點中刪除。

您可以從 Azure 入口網站中 [帳戶設定] 底下的 [金鑰] 取得 State Configuration 註冊通訊協定所需的資訊。

Azure 自動化金鑰和 URL

  • 註冊 URL 是 [金鑰] 頁面上的 URL 欄位。
  • 註冊金鑰是 [金鑰] 頁面上的 [主要存取金鑰] 欄位或 [次要存取金鑰] 欄位的值。 可以使用這兩個金鑰。

為了增加安全性,您可以隨時在 [金鑰] 頁面上重新產生自動化帳戶的主要和次要存取金鑰。 重新產生金鑰可避免未來註冊節點時使用先前的金鑰。

產生 DSC 中繼設定

若要啟用任何機器以支援「狀態設定」,您可以產生 DSC 中繼設定。 此設定指示 DSC 代理程式從「Azure 自動化狀態設定」提取和/或向此服務報告。 您可以使用 PowerShell DSC 設定或 Azure 自動化 PowerShell Cmdlet,以產生「Azure 自動化狀態設定」的 DSC 中繼設定。

注意

若要啟用自動化帳戶中的機器來管理,DSC 中繼設定包含所需的秘密。 請務必適當地保護您所建立的任何 DSC 中繼設定,或在使用後將它們刪除。

本機 設定管理員 (LCM) 控制中繼設定的 Proxy 支援。 LCM 在所有目標節點上執行,負責呼叫 DSC 中繼設定指令碼中包含的設定資源。 若要將 Proxy 支援加入中繼設定,您可以視需要在 ConfigurationRepositoryWebResourceRepositoryWebReportServerWeb 區塊中加入 ProxyURLProxyCredential 屬性的定義。 ProxyURL = "http://172.16.3.6:3128"; 是 URL 設定的例子。 ProxyCredential 屬性設定為 PSCredential 物件,如在 Azure 自動化中管理認證所述。

使用 DSC 設定產生 DSC 中繼設定

  1. 以本機環境中的計算機系統管理員身分開啟文本編輯器,例如Visual Studio Code (VS Code)。 電腦必須安裝最新版本的 WMF 5

  2. 在本機複製下列指令碼。 此指令碼包含用來建立中繼設定的 PowerShell DSC 設定,以及開始執行中繼設定建立作業的命令。

    注意

    在入口網站中,「狀態設定節點設定」名稱區分大小寫。 如果大小寫不相符,則該節點不會出現在 [節點] 索引標籤下。

    # The DSC configuration that will generate metaconfigurations
    [DscLocalConfigurationManager()]
    Configuration DscMetaConfigs
    {
         param
         (
             [Parameter(Mandatory=$True)]
             [String]$RegistrationUrl,
    
             [Parameter(Mandatory=$True)]
             [String]$RegistrationKey,
    
             [Parameter(Mandatory=$True)]
             [String[]]$ComputerName,
    
             [Int]$RefreshFrequencyMins = 30,
    
             [Int]$ConfigurationModeFrequencyMins = 15,
    
             [String]$ConfigurationMode = 'ApplyAndMonitor',
    
             [String]$NodeConfigurationName,
    
             [Boolean]$RebootNodeIfNeeded= $False,
    
             [String]$ActionAfterReboot = 'ContinueConfiguration',
    
             [Boolean]$AllowModuleOverwrite = $False,
    
             [Boolean]$ReportOnly
         )
    
         if(!$NodeConfigurationName -or $NodeConfigurationName -eq '')
         {
             $ConfigurationNames = $null
         }
         else
         {
             $ConfigurationNames = @($NodeConfigurationName)
         }
    
         if($ReportOnly)
         {
             $RefreshMode = 'PUSH'
         }
         else
         {
             $RefreshMode = 'PULL'
         }
    
         Node $ComputerName
         {
             Settings
             {
                 RefreshFrequencyMins           = $RefreshFrequencyMins
                 RefreshMode                    = $RefreshMode
                 ConfigurationMode              = $ConfigurationMode
                 AllowModuleOverwrite           = $AllowModuleOverwrite
                 RebootNodeIfNeeded             = $RebootNodeIfNeeded
                 ActionAfterReboot              = $ActionAfterReboot
                 ConfigurationModeFrequencyMins = $ConfigurationModeFrequencyMins
             }
    
             if(!$ReportOnly)
             {
             ConfigurationRepositoryWeb AzureAutomationStateConfiguration
                 {
                     ServerUrl          = $RegistrationUrl
                     RegistrationKey    = $RegistrationKey
                     ConfigurationNames = $ConfigurationNames
                 }
    
                 ResourceRepositoryWeb AzureAutomationStateConfiguration
                 {
                     ServerUrl       = $RegistrationUrl
                     RegistrationKey = $RegistrationKey
                 }
             }
    
             ReportServerWeb AzureAutomationStateConfiguration
             {
                 ServerUrl       = $RegistrationUrl
                 RegistrationKey = $RegistrationKey
             }
         }
    }
    
    # Create the metaconfigurations
    # NOTE: DSC Node Configuration names are case sensitive in the portal.
    # TODO: edit the below as needed for your use case
    $Params = @{
         RegistrationUrl = '<fill me in>';
         RegistrationKey = '<fill me in>';
         ComputerName = @('<some VM to onboard>', '<some other VM to onboard>');
         NodeConfigurationName = 'SimpleConfig.webserver';
         RefreshFrequencyMins = 30;
         ConfigurationModeFrequencyMins = 15;
         RebootNodeIfNeeded = $False;
         AllowModuleOverwrite = $False;
         ConfigurationMode = 'ApplyAndMonitor';
         ActionAfterReboot = 'ContinueConfiguration';
         ReportOnly = $False;  # Set to $True to have machines only report to AA DSC but not pull from it
    }
    
    # Use PowerShell splatting to pass parameters to the DSC configuration being invoked
    # For more info about splatting, run: Get-Help -Name about_Splatting
    DscMetaConfigs @Params
    
  3. 填入自動化帳戶的註冊金鑰和 URL,以及要啟用的電腦名稱。 所有其他參數皆為選擇性使用。 若要尋找自動化帳戶的註冊金鑰和註冊 URL,請參閱使用 DSC 中繼設定來註冊混合式機器

  4. 如果您希望機器向「Azure 自動化狀態設定」報告 DSC 狀態資訊,但不要提取設定或 PowerShell 模組,請將 ReportOnly 參數設定為 true。

  5. 如果未ReportOnly設定,計算機會將 DSC 狀態資訊回報為 Azure 自動化 狀態設定 和提取設定或 PowerShell 模組。 在 ConfigurationRepositoryWebResourceRepositoryWebReportServerWeb 區塊中,相應地設定參數。

  6. 執行指令碼。 您現在應該有一個名為 DscMetaConfigs 的工作目錄資料夾,其中包含所要啟用機器 (以系統管理員身分) 的 PowerShell DSC 中繼設定。

    Set-DscLocalConfigurationManager -Path ./DscMetaConfigs
    

使用 Azure 自動化 Cmdlet 產生 DSC 中繼設定

在下列情況下,您可以使用 Azure 自動化 Cmdlet 來產生 DSC 中繼設定:

  • LCM 預設值符合您的使用案例
  • 您想要讓機器同時從 和報表提取至 Azure 自動化 狀態設定

使用下列步驟來產生中繼設定:

  1. 以本機環境中電腦上的系統管理員身分開啟 PowerShell 控制台或 VS Code。

  2. 使用 Connect-AzAccount 連線至 Azure Resource Manager。

  3. 從您要在其中設定節點的自動化帳戶下載您要啟用之電腦的PowerShell DSC 中繼設定。

    # Define the parameters for Get-AzAutomationDscOnboardingMetaconfig using PowerShell Splatting
    $Params = @{
        ResourceGroupName = 'ContosoResources' # The Resource Group that contains your Azure Automation account
        AutomationAccountName = 'ContosoAutomation'; # The Azure Automation account where you want to onboard the node
        ComputerName = @('web01', 'web02', 'sql01'); # The computers to generate the metaconfigurations for
        OutputFolder = "$env:UserProfile\Desktop\";
    }
    # Use PowerShell splatting to pass parameters to the Azure Automation cmdlet being invoked
    # For more info about splatting, run: Get-Help -Name about_Splatting
    Get-AzAutomationDscOnboardingMetaconfig @Params
    
  4. 您現在應該有 DscMetaConfigs 資料夾,其中包含所要啟用機器 (以系統管理員身分) 的 PowerShell DSC 中繼設定。

    Set-DscLocalConfigurationManager -Path $env:UserProfile\Desktop\DscMetaConfigs
    

啟用實體/虛擬 Windows 機器

您可以啟用在內部部署或其他雲端環境 (包括 AWS EC2 執行個體) 中執行的 Windows 伺服器,以支援「Azure 自動化狀態設定」。 伺服器必須具有對 Azure 的輸出存取

  1. 在您要啟用來支援「狀態設定」的機器上,請確定已安裝最新版的 WMF 5。 此外,WMF 5 必須安裝在您用來啟用電腦的電腦上。

  2. 若要建立包含必要 DSC 中繼設定的資料夾,請遵循產生 DSC 中繼設定中的指示。

  3. 使用下列 Cmdlet,從遠端將 PowerShell DSC 中繼設定套用至要啟用的機器。

    Set-DscLocalConfigurationManager -Path C:\Users\joe\Desktop\DscMetaConfigs -ComputerName MyServer1, MyServer2
    
  4. 如果您無法從遠端套用 PowerShell DSC 中繼設定,請將 中繼 設定資料夾複製到您啟用的電腦。 然後新增程式碼,以在機器本機呼叫 Set-DscLocalConfigurationManager

  5. 使用 Azure 入口網站或 Cmdlet,驗證機器是否顯示為 Azure 自動化帳戶中註冊的「狀態設定」節點。

啟用實體/虛擬 Linux 機器

您可以啟用在內部部署或其他雲端環境中執行的 Linux 伺服器,以支援「狀態設定」。 伺服器必須具有對 Azure 的輸出存取

  1. 在要啟用來支援「狀態設定」的機器上,請確定已安裝最新版的 PowerShell Desired State Configuration for Linux

  2. 如果 PowerShell DSC Local Configuration Manager 預設值符合您的使用案例,而且您想要啟用機器,讓機器從「狀態設定」提取並向此服務報告:

    • 在要啟用的每部 Linux 機器上,使用 Register.py,以 PowerShell DSC Local Configuration Manager 預設值啟用機器。

      /opt/microsoft/dsc/Scripts/Register.py <Automation account registration key> <Automation account registration URL>

    • 若要尋找自動化帳戶的註冊金鑰和註冊 URL,請參閱使用 DSC 中繼設定來註冊混合式機器

  3. 如果 PowerShell DSC Local Configuration Manager (LCM) 預設值不符合您的使用案例,或您想要啟用機器以只向「Azure 自動化狀態設定」報告,請遵循步驟 4-7。 否則,請直接跳至步驟 7。

  4. 遵循產生 DSC 中繼設定一節的指示產生資料夾,其中包含所需的 DSC 中繼設定。

  5. 在用來啟用機器以支援「狀態設定」的電腦上,請確定已安裝最新版的 WMF 5

  6. 新增如下的程式碼,從遠端將 PowerShell DSC 中繼設定套用至要啟用的機器。

    $SecurePass = ConvertTo-SecureString -String '<root password>' -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential 'root', $SecurePass
    $Opt = New-CimSessionOption -UseSsl -SkipCACheck -SkipCNCheck -SkipRevocationCheck
    # need a CimSession for each Linux machine to onboard
    $Session = New-CimSession -Credential $Cred -ComputerName <your Linux machine> -Port 5986 -Authentication basic -SessionOption $Opt
    Set-DscLocalConfigurationManager -CimSession $Session -Path C:\Users\joe\Desktop\DscMetaConfigs
    
  7. 如果您無法從遠端套用 PowerShell DSC 中繼設定,請將對應於遠端電腦的中繼設定,從步驟 4 所述的資料夾複製到 Linux 機器上。

  8. 新增程式碼,在每一部要啟用以支援「狀態設定」的 Linux 機器本機呼叫 Set-DscLocalConfigurationManager.py

    /opt/microsoft/dsc/Scripts/SetDscLocalConfigurationManager.py -configurationmof <path to metaconfiguration file>

  9. 請確定計算機會顯示為您 Azure 自動化 帳戶中註冊的 DSC 節點。 您可以使用 Azure 入口網站 或 Cmdlet。

重新註冊節點

在 Azure 自動化 狀態設定 中將計算機註冊為 DSC 節點之後,未來可能需要重新註冊該節點的原因有很多。

  • 憑證更新。 針對 Windows Server 2019 之前的 Windows Server 版本,每個節點會自動交涉唯一的驗證憑證,有效期限一年。 如果憑證過期但沒有更新,則節點無法與 Azure 自動化通訊,還會標示為 Unresponsive。 目前,PowerShell DSC 註冊通訊協議無法在憑證即將到期時自動更新憑證,而且您必須在一年後重新註冊節點。 重新註冊之前,請確定每個節點都執行 WMF 5 RTM。

    如果您從憑證到期時間或憑證到期時間之後的任何時間點重新註冊 90 天或更少,就會產生新的憑證,並加以使用。 此問題已在 Windows Server 2019 和更新版本中修正。

  • 變更 DSC LCM 值。 您可能需要變更在節點初始註冊期間設定的 PowerShell DSC LCM 值,例如 ConfigurationMode。 目前,您只能透過重新註冊來變更這些 DSC 代理程式值。 其中一個例外狀況是節點組態值。 您可以直接在 Azure 自動化 DSC 中變更此值。

您可以使用本文所述的任何方法,像最初註冊節點一樣來重新註冊節點。 您不需要在重新註冊節點之前,先從 Azure 自動化 狀態設定 取消註冊節點。

檢查 VM 設定的狀態

「狀態設定」可讓您輕鬆啟用 Azure Windows VM 來支援組態管理。 在幕後,Azure VM Desired State Configuration 擴充功能是用來向 Azure Automation State Configuration 註冊 VM。 因為 Azure VM Desired State Configuration 擴充以非同步方式執行,您可能必須追蹤進度並排解執行時的問題。

注意

使用任何方法來啟用 Azure Windows VM 以支援「狀態設定」時 (使用 Azure VM Desired State Configuration 擴充),最多可能需要經過一小時,Azure 自動化才會顯示 VM 已註冊。 此延遲起因於 Azure VM Desired State Configuration 擴充在 VM 上安裝 WMF 5,但為了啟用 VM 來支援「狀態設定」,有此必要。

若要檢視 Azure VM Desired State Configuration 擴充的狀態:

  1. 在 Azure 入口網站中,巡覽至要啟用的 VM。
  2. 選取 [設定] 底下的 [擴充功能]。
  3. 現在,視作業系統而定,選取 [DSC] 或 [DSCForLinux]
  4. 如需詳細資訊,您可以選取 [ 檢視詳細狀態]。

下一步