什麼是 Azure 自動化狀態設定?

已完成

您能夠使用 Azure 自動化狀態設定確保叢集區域中的虛擬機器 (VM) 處於一致的狀態,且已安裝相同的軟體並具有相同的設定。

在本單元中,您會了解 Azure 自動化的特性和功能、檢閱 PowerShell Desired State Configuration (DSC) 的宣告式模型,並探索其優點。

Azure 自動化狀態設定是以 PowerShell 為基礎建置的 Azure 服務。 它可讓您以一致的方式部署、可靠地監視及自動更新您所有資源的預期狀態。 Azure 自動化提供工具來定義設定,並將其套用至實體機器與虛擬機器。

為何使用 Azure 自動化狀態設定?

針對執行服務的伺服器,手動維護正確且一致的設定可能會很麻煩且容易出錯。 Azure 自動化狀態設定會使用 PowerShell DSC 來協助解決這些挑戰。 它會集中管理您的 DSC 成品和 DSC 程序。

Azure 自動化狀態設定有內建的提取伺服器。 您可以將節點設為目標,以自動從提取伺服器接收設定、符合預期狀態,並回報其合規性。 您能以位於雲端或內部部署的虛擬或實體 Windows 或 Linux 機器為目標。

您可以使用 Azure 監視器記錄來檢閱節點的合規性,方法是設定 Azure 自動化狀態設定來傳送此資料。

什麼是 PowerShell DSC?

PowerShell DSC 是 Azure 自動化狀態設定用來設定、部署及控制系統的宣告式管理平台。 宣告式程式設計語言會將意圖 (「您要執行的動作」) 與執行 (「您要怎麼做」) 區隔開來。 您可以指定預期狀態,然後讓 DSC 執行工作來完成。 當 DSC 資源可供使用時,您不需要知道如何實作或部署功能。 相反地,您會將焦點放在部署的結構上。

如果您已經在使用 PowerShell,您可能會想知道為什麼需要 DSC。 請思考一下下列範例。

當您想要在 Windows 伺服器上建立共用時,您可以使用此 PowerShell 命令:

# Create a file share
New-SmbShare -Name MyFileShare -Path C:\Shared -FullAccess User1 -ReadAccess User2

此指令碼既簡單又容易了解。 不過,如果您在生產環境中使用此指令碼,將會遇到幾個問題。 請考慮如果執行多次指令碼,或 User2 已有完整存取權,而不是唯讀存取權限,可能會發生什麼情況。

這種方法不具「等冪性」。 等冪所描述的作業,不論您是執行一次或 10,001 次,都具有相同的效果。 若要在 PowerShell 中達到等冪,您需要新增邏輯與錯誤處理。 如果檔案共用不存在,請加以建立。 如果共用存在,則不需要建立它。 如果 User2 存在,但沒有讀取權限,您可以新增讀取權限。

您的 PowerShell 指令碼會像下面這樣:

$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
    Write-Verbose -Message "Share with name $Name exists"
    $shareExists = $true
}

if ($shareExists -eq $false)
{
    Write-Verbose "Creating share $Name to ensure it is Present"
    New-SmbShare @psboundparameters
}
else
{
    # Need to call either Set-SmbShare or *ShareAccess cmdlets
    if ($psboundparameters.ContainsKey("ChangeAccess"))
    {
       #...etc., etc., etc
    }
}

您未考量的其他特殊情況只有在發生問題時才會發現。 DSC 會自動處理意外的情況。 使用 DSC,您可以描述最終結果,而不是要達成此結果的程序。

下列 DSC 程式碼片段顯示一個範例:

Configuration Create_Share
{
   Import-DscResource -Module xSmbShare
   # A node describes the VM to be configured

   Node $NodeName
   {
      # A node definition contains one or more resource blocks
      # A resource block describes the resource to be configured on the node
      xSmbShare MySMBShare
      {
          Ensure      = "Present"
          Name        = "MyFileShare"
          Path        = "C:\Shared"
          ReadAccess  = "User1"
          FullAccess  = "User2"
          Description = "This is an updated description for this share"
      }
   }
}

前一個範例使用 xSmbShare 模組,該模組可告知 DSC 如何檢查檔案共用的狀態。 DSC 資源套件具有超過 100 個資源模組,包括一個用於安裝 IIS 網站的資源模組。 您可以在本課程模組結尾的「摘要」單元中找到 DSC 資源套件的連結。

您將在下一個單元中深入了解 PowerShell DSC 程式碼結構。

什麼是 LCM?

本機設定管理員 (LCM) 是 Windows 作業系統上的 Windows Management Framework (WMF) 元件。 LCM 會負責更新節點 (例如 VM) 的狀態,以符合預期狀態。 每次 LCM 執行時,它都會完成下列步驟:

  1. 取得:取得節點的目前狀態。
  2. 測試:使用編譯後的 DSC 指令碼 (.mof 檔案),將節點的目前狀態與所需狀態進行比較。
  3. 設定:更新節點,使其符合 .mof 檔案中所描述的所需狀態。

當您向 Azure 自動化註冊 VM 時,將會設定 LCM。

DSC 中的推送和提取架構

每個節點上的 LCM 都可以在兩種模式下運作。

  • 推送模式:系統管理員會以手動方式將設定傳送 (或「推送」) 至一或多個節點。 LCM 會確保每個節點上的狀態都符合由設定所指定的狀態。

    顯示 DSC 中推送架構的圖表。

  • 提取模式:提取伺服器會保留設定資訊。 每個節點上的 LCM 都會定期 (根據預設為每 15 分鐘) 輪詢提取伺服器,以取得最新的設定詳細資料。 這些要求會在下圖中表示為步驟 1。 在步驟 2 中,提取伺服器會將任何有關設定變更的詳細資料傳回給每個節點。

    在提取模式中,每個節點都必須向提取服務註冊。

    顯示 DSC 中提取架構的圖表。

這兩種模式都有優點:

  • 推送模式很容易設定。 它不需要自己專用的基礎結構,而且可以在膝上型電腦上執行。 推送模式對於測試 DSC 的功能很有幫助。 您還可以使用推送模式,將新建立映像的機器設定為基準預期狀態。
  • 當企業部署跨越大量機器時,提取模式非常有用。 LCM 會定期輪詢提取伺服器,並確定節點處於預期狀態。 如果外部工具或小組套用了導致個別機器上設定漂移的任何 Hotfix,那些機器都會快速地與您所設定的設定一致。 此程序可以幫助您達到持續遵守安全性和法規義務的合規性狀態。

支援的平台與作業系統

Azure 雲端服務和其他雲端提供者、您的內部部署基礎結構,或所有這些環境的混合,都支援 Azure 自動化 DSC。

Azure 自動化 DSC 支援下列作業系統:

  • Windows
    • Server 2022
    • Server 2019
    • Server 2016
    • Server 2012 R2
    • Server 2012
    • Server 2008 R2 SP1
    • 11
    • 10
    • 8.1
    • 7
  • Linux

PowerShell DSC 會安裝在 Azure Automation DSC 支援的所有 Linux 電腦上。

Windows 的 DSC 需求

針對 Windows 機器,Azure Desired State Configuration (DSC) VM 延伸模組會使用 WMF 來管理 Windows PowerShell DSC 與 Windows 遠端管理 (WinRM) 等的 Windows 功能版本。 Azure DSC 支援 WMF 4.0 和更新版本,因此 Windows 電腦必須執行 Windows Server 2008 R2 SP1、Windows 7 或更新版本。

第一次呼叫 Azure DSC 延伸模組時,它會在 Windows Server 2016 與更新版本以外的所有 Windows 版本上,安裝 OS 相容版本的 WMF。 Windows Server 2016 與更新版本已安裝最新版本的 WMF。 安裝 WMF 之後,需要將機器重新啟動。

在執行 Windows Server 2012 或更新版本及 Windows 7 或更新版本的電腦節點上啟用 WinRM。

DSC 代理程式的 Proxy 支援可在 Windows 組建 1809 與更新版本中取得。 DSC 在舊版 Windows 中無法使用 Proxy 支援。

其他 DSC 需求

如果您的節點位於私人網路中,DSC 必須要有下列連接埠與 URL,才能與 Azure 自動化進行通訊:

  • 連接埠:只需要 TCP 443 以便進行傳出網際網路存取
  • 全域 URL:*.azure-automation.net
  • US Gov 維吉尼亞州的全域 URL:*.azure-automation.us
  • 代理程式服務:https://<workspaceId>.agentsvc.azure-automation.net

檢定您的知識

1.

什麼是 Azure 自動化狀態設定?

2.

PowerShell DSC 指令碼 ______________。

3.

為什麼您應該針對 DSC 使用提取模式,而不是推送模式?