共用方式為


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

注意

啟用 DSC 擴充功能之前,我們希望您知道較新版本的 DSC 現已正式推出,名為 Azure Machine Configuration。 Azure Machine Configuration 服務包含 DSC 擴充功能的功能,以及客戶意見反應中常用的功能。 Azure Machine Configuration 也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。

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

DSC 擴充功能只會將設定推送至 VM。 除了在 VM 本機之外,沒有任何持續報告可供使用。

可用的 DSC 版本

DSC 擴充功能支援 DSC 平臺 1.1 版的組態。 如需詳細資訊,請參閱 PSDesiredStateConfiguration v1.1

必要條件

  • 開發人員工作站:若要與 Azure DSC 擴充功能互動,您必須使用 Azure 入口網站 或 Azure PowerShell/CLI 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 狀態通道。

節點設定名稱

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

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

ARM 範本部署

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

PowerShell Cmdlet 部署

PowerShell Cmdlet 專門管理 DSC 延伸模組,適用於互動式疑難排解和資訊收集情節。 您可以使用這些 Cmdlet 來封裝、發佈及監視 DSC 延伸模組部署。

以下是一些可用的 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 延伸模組設定以下參數。

    • 組態模組或指令碼:(必要)為 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 延伸模組的記錄。

下一步