Azure Desired State Configuration 延伸模組處理常式簡介

適用於 Azure 虛擬機器(VM)的 Azure VM 延伸模組和相關延伸模組,都是 Microsoft Azure 基礎結構服務的一部分。 Azure VM 延伸模組是擴充 VM 功能並簡化各種 VM 管理作業的軟體元件。

Windows PowerShell 的 Azure Desired State Configuration(DSC)延伸模組,主要用途是在 Azure 自動化狀態設定(DSC)服務中執行 VM 的啟動程序。 這項服務提供的權益包括持續管理 VM 設定,以及整合 Azure 監視器等其他作業工具。 您可以使用延伸模組在該服務註冊 VM,取得靈活的解決方案,並能在各 Azure 訂用帳戶之間使用。

您可以獨立執行 DSC 延伸模組,不受 Automation DSC 服務限制,但這個方法只能將設定推送到 VM。 除了在 VM 本機之外,沒有任何持續報告可供使用。 啟用 DSC 延伸模組之前,請檢閱可用的 DSC 版本,然後選擇支援設定需求的版本。

本文說明如何使用 DSC 延伸模組進行自動化上線,或將其當作透過 Azure SDK 向 VM 指派設定的工具。

可用的 DSC 版本

Desired State Configuration 有好幾個版本可供實作。 啟用 DSC 延伸模組之前,請選擇最適合您設定和商務目標的 DSC 版本。

版本 可用性 描述
2.0 正式發行 支援 Desired State Configuration 2.0 與 Azure Automanage 機器設定功能搭配使用。 機器設定功能集結了 DSC 延伸模組處理常式、Azure 自動化狀態設定,以及客戶意見反應中最常要求的功能。 機器設定也包含混合機器支援(透過支援 Arc 的伺服器提供)。
1.1 正式發行 如果您的實作不使用 Azure Automanage 機器設定功能,應選擇 Desired State Configuration 1.1。 如需詳細資訊,請參閱 PSDesiredStateConfiguration v1.1
3.0 公開預覽 Desired State Configuration 3.0 已推出公開搶鮮版 (Beta)。 這個版本只應與 Azure 機器設定搭配使用,或用於非商業執行環境,以測試從 Desired State Configuration 1.1 的移轉。

必要條件

  • 本機電腦:若要與 Azure DSC 延伸模組互動,必須在本機電腦上使用 Azure 入口網站或 Azure PowerShell SDK。

  • 客體代理程式:由 DSC 設定準備的 Azure VM,必須使用支援 Windows Management Framework (WMF) 4.0 或更新版本的作業系統。 如需支援的作業系統版本的完整清單,請參閱 Azure DSC 延伸模組版本歷程記錄

詞彙和概念

本文假設您熟悉以下概念:

  • 設定:是指 DSC 設定文件。

  • 節點 識別 DSC 設定的目標。 本文的節點一律指 Azure VM。

  • 設定資料儲存在 PowerShell DSC 格式檔案 (.psd1) 中,內含設定的環境資料。

架構

Azure DSC 延伸模組使用 Azure VM 延伸模組架構,傳遞、制定和報告 Azure VM 上執行的 DSC 設定。 DSC 延伸模組接受設定文件和一組參數。 如果未提供任何檔案,就會隨延伸模組內嵌一個預設設定指令碼。 預設設定指令碼只用來在本機設定管理員中設定中繼資料。

第一次呼叫延伸模組時,系統會使用以下邏輯安裝 WMF 版本:

  • 如果 Azure VM 作業系統是 Windows Server 2016,則不執行任何動作。 Windows Server 2016 已安裝最新版的 PowerShell。

  • 如果指定了 wmfVersion 屬性,請安裝指定的 WMF 版本,除非指定版本與 VM 的作業系統不相容。

  • 如果未指定 wmfVersion 屬性,則會安裝最新適用的 WMF 版本。

WMF 安裝流程需要重新啟動。 重新啟動後,延伸模組將下載 modulesUrl 屬性中指定的 .zip 檔案(如果提供的話)。 如果這個位置在 Azure Blob 儲存體中,您可以在 sasToken 屬性中指定 SAS 權杖來存取該檔案。 下載並解壓縮 .zip 後,將執行 configurationFunction 定義的組態函數,以產生受控物件格式 (MOF) 檔案 (.mof)。 接著延伸模組將使用產生的 .mof 檔執行 Start-DscConfiguration -Force。 延伸模組會擷取輸出並將其寫入至 Azure 狀態通道。

預設設定指令碼

Azure DSC 延伸模組包含預設設定指令碼,擬在 Azure 自動化狀態設定服務中讓 VM 上線時使用。 指令碼參數會對齊本機設定管理員的可設定屬性。 如需指令碼參數,請參閱Desired State Configuration 和 Azure Resource Manager (ARM) 範本預設設定指令碼。 如需完整的指令碼,請參閱 GitHub 中的 Azure 快速入門範本

Azure 自動化狀態設定註冊

使用 Azure DSC 延伸模組向 Azure 自動化狀態設定服務註冊節點時,需要提供以下值:

  • RegistrationUrl:Azure 自動化帳戶的 https 位址。
  • RegistrationKey:共用祕密,用於在服務註冊節點。
  • NodeConfigurationName:從服務提取的節點設定 (MOF) 名稱,用於設定伺服器角色。 該值是節點設定的名稱,不是設定的名稱。

您可以從 Azure 入口網站收集這些值,或在 Windows PowerShell 中執行以下命令:

(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).Endpoint
(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).PrimaryKey

節點設定名稱

對於 NodeConfigurationName 參數,請確認提供的是節點設定的名稱,而不是設定。

設定是在編譯節點設定(MOF 檔案)的指令碼中定義。 節點設定的名稱一律是設定名稱,後面加上句點 .localhost 或指定的電腦名稱。

警告

確認 Azure 自動化狀態設定中存在節點設定。 如果此值不存在,延伸模組部署將傳回失敗。

ARM 範本部署

部署 DSC 延伸模組最常見的方法,是使用 Azure Resource Manager 範本。 如需如何在 ARM 範本中加入 DSC 延伸模組的詳細資訊和範例,請參閱 Desired State Configuration 延伸模組和 ARM 範本

PowerShell Cmdlet 部署

PowerShell Cmdlet 專門管理 DSC 延伸模組,適用於互動式疑難排解和資訊收集情節。 您可以使用這些 Cmdlet 來封裝、發佈及監視 DSC 延伸模組部署。 DSC 延伸模組的 Cmdlet 目前尚未更新,還不能與預設設定指令碼一起使用。

以下是一些可用的 PowerShell cmdlet:

  • Publish-AzVMDscConfiguration Cmdlet 會接受設定檔、掃描其中是否有相依的 DSC 資源,然後建立 .zip 檔案。 .zip 檔案包含設定及制定設定所需的 DSC 資源。 Cmdlet 也可以使用 -OutputArchivePath 參數在本機建立封裝。 否則 Cmdlet 會將 .zip 檔案發佈到 Blob 儲存體,然後使用 SAS 權杖予以保護。

    Cmdlet 建立的 PowerShell 設定指令碼 (.ps1),位於封存資料夾根下的 .zip 檔案中。 模組資料夾是放在資源的封存資料夾中。

  • Set-AzVMDscExtension Cmdlet 會將 PowerShell DSC 延伸模組所需的設定插入虛擬機器設定物件中。

  • Get-AzVMDscExtension Cmdlet 會擷取特定虛擬機器的 DSC 延伸模組狀態。

  • Get-AzVMDscExtensionStatus Cmdlet 會擷取 DSC 延伸模組處理常式所制定之 DSC 設定的狀態。 您可以在單一 VM 或一組 VM 上執行這個動作。

  • Remove-AzVMDscExtension Cmdlet 會從特定虛擬機器中移除延伸模組處理常式。 請記住,此 cmdlet 不會移除設定、解除安裝 WMF 或變更 VM 上套用的設定。 Cmdlet 只會移除延伸模組處理常式。

重要考量

使用 Azure Resource Manager Cmdlet 時,應記住幾個事項。

  • Azure Resource Manager Cmdlet 是同步的。

  • 需要幾個參數,包括 ResourceGroupNameVMNameArchiveStorageAccountNameVersionLocation

  • ArchiveResourceGroupName 是選擇性參數。 若儲存體帳戶屬於其他資源組(與建立 VM 的資源組不同),請指定這個參數。

  • 使用 AutoUpdate 可在延伸模組處理常式有最新版本時,自動切換到最新版本。 此參數有可能導致虛擬機器在新版 WMF 發行時重新啟動。

含 PowerShell Cmdlet 的設定

Azure DSC 延伸模組可以使用 DSC 設定文件,在部署期間直接設定 Azure VM。 此步驟不會向「自動化」註冊節點。 請記住,系統不會集中管理節點。

以下程式碼顯示一個簡單的設定範例。 若要使用這個範例,請將這個本機設定儲存為 iisInstall.ps1 指令檔。

configuration IISInstall
{
    node "localhost"
    {
        WindowsFeature IIS
        {
            Ensure = "Present"
            Name = "Web-Server"
        }
    }
}

以下 PowerShell 命令將 iisInstall.ps1 指令碼置於指定的 VM。 這些命令也會執行設定,然後回報狀態。

$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.76' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'

Azure CLI 部署

Azure CLI 可用於將 DSC 延伸模組部署到現有 VM。 以下範例說明如何在 Windows 部署 VM。

若在 Windows 上執行 VM,請使用下列命令:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSC \
  --publisher Microsoft.Powershell \
  --version 2.77 --protected-settings '{}' \
  --settings '{}'

Azure 入口網站部署

若要在 Azure 入口網站中設定 DSC 延伸模組,請依以下步驟操作:

  1. 前往 VM。

  2. 設定下,選取延伸模組 + 應用程式

  3. 在 [延伸模組] 底下,選取 [+ 新增]。

  4. 選取 PowerShell Desired State Configuration,然後選取下一步

  5. 請為 DSC 延伸模組設定以下參數。

    注意

    如果您使用預設設定指令碼,請記住以下多數參數必須直接在 Azure 入口網站定義,而不是透過指令碼定義。

    • 組態模組或指令碼:(必要)為 VM 提供組態模組或指令檔。

      設定模組和指令碼需要一個包含設定指令碼的 .ps1 檔案,或一個 .ps1 設定指令碼位於根目錄的 .zip 檔案。 如果使用 .zip 檔案,該 .zip 檔案的模組資料夾中必須包含所有相依資源。 您可以使用 Azure PowerShell SDK 所包含的 Publish-AzureVMDscConfiguration -OutputArchivePath Cmdlet 來建立 .zip 檔案。 .zip 檔案上傳到您的使用者 Blob 儲存體,並由 SAS 權杖保護。

    • 模組限定的設定名稱:(必要)指定這項設定,在單一 .ps1 指令檔中加入多個組態函數。 在這項設定中,輸入設定 .ps1 指令檔的名稱,後面加上斜杠 \,然後輸入組態函數的名稱。 舉例而言,如果 .ps1 指令檔的名稱是 configuration.ps1 且設定名稱是 IisInstall,請輸入該設定的值 configuration.ps1\IisInstall

    • 組態引數︰如果組態函數接受引數,請依照格式 argumentName1=value1,argumentName2=value2 輸入值。 請注意,這個格式與在 PowerShell Cmdlet 或 ARM 範本中指定設定參數的格式不同。

      注意

      您可以在預設設定指令碼中定義設定引數。

    • 設定資料 PSD1 檔案:如果您的設定需要 .psd1 格式的設定資料檔案,請使用這項設定選取資料檔案,並將其上傳到使用者 Blob 儲存體。 Blob 儲存體中的設定資料檔案由 SAS 權杖保護。

    • WMF 版本:指定要安裝在 VM 的 Windows Management Framework 的版本。 如果您選擇最新(預設值),系統將安裝 WMF 最新版本。 其他可能值包括 4.0、5.0 和 5.1。 可能值可能會更新。

    • 資料收集:如果您希望 DSC 延伸模組收集您 VM 的遙測資料,請啟用這項設定。 如需詳細資訊,請參閱 Azure DSC 延伸模組集合 \(英文\)。

    • 版本:(必要)指定要安裝的 DSC 延伸模組版本。 如需版本的資訊,請參閱 Azure DSC 延伸模組版本歷程記錄

    • 自動升級次要版本:這項設定對應到 Cmdlet 中的 AutoUpdate 開關。 設定這項設定,即可讓 DSC 延伸模組在安裝過程中,自動更新到最新版本。 指示 DSC 延伸模組處理常式使用可用的最新版本。 (預設)強制安裝您在版本設定中指定的版本。

  6. 設定參數後,請選取檢閱 + 建立,然後選取建立

DSC 延伸模組記錄

您可以在 C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number> 下,檢視 VM 的 Azure DSC 延伸模組的記錄。

下一步