PowerShell DSC和Puppet - 為什麼它不是/或者

 

在這 詢問管理員,我將討論為什麼Puppet和DSC一起通常是混合配置中最好的配置管理解決方案 Windows/ Linux環境。

如果您不熟悉Puppet,則它大致等效於PowerShell期望狀態配置(DSC),DSC是內置於現代版本的PowerShell技術中。 Windows。 Puppet和DSC都是配置管理工具,允許系統管理員和開發人員定義如何使用聲明性語法配置服務器。

在標準的PowerShell代碼中,或者在Puppet的情況下,使用命令式語法來執行一系列指令來實現所需的配置。

  1. 安裝此組件。
  2. 配置這些設置。
  3. 如果x為真,讓設置z等於y。
  4. 重啟。

在以下位置安裝和配置Active Directory Windows 在使用PowerShell的服務器上,您需要了解如何安裝所需的角色和功能,然後如何配置它們。 但是,使用聲明性語法,您可以說明如何配置服務器。 或者您希望它如何“看起來”。 您不需要了解達到預期結果所需的技術步驟。 或者像Puppet所說的那樣,“用模型代替腳本”。

  1. 確保Active Directory與這些參數一起出現(...)

這與系統管理員傳統上的配置方式大不相同。 Windows 服務器,因為可用工具 Windows 設計時並未考慮DevOps環境。

組策略與基於文本的配置管理

組策略和DSC相互重疊,但解決了不同的問題。 您可以使用DSC構建服務器。 即決定應安裝哪些角色和功能。 組策略更適合管理配置設置。 例如,您可以選擇應用Microsoft的安全基準組策略模板,該模板包含數百個建議的設置。 DSC可用於應用數百個安全設置,但所需的清單可能變得難以管理。

有關Microsoft的安全基準組策略模板的更多信息, Windows,見 微軟推出安全合規工具包1.0 on 的Petri.

確定服務器配置方式的基於文本的聲明性清單文件比組策略具有多個優勢。 首先是版本控制和變更控制。 高級組策略管理(AGPM)工具提供了對組策略的版本控制,但僅對具有軟件保障的Microsoft客戶可用。 AGPM是Microsoft桌面優化包(MDOP)的一部分。 但是文本文件可以簽入任何源代碼控制解決方案,例如GitHub。 您沒有被限制使用不廣泛使用的僅支持的工具 Windows.

需要注意的是,文本文件不需要特殊的工具即可編輯。 與旨在管理的組策略對象(GPO)不同 Windows 通過API,任何有權讀取文本文件的人都可以創建,編輯和驗證文本文件。 文本文件特別適合DevOps的原理,其中包括以純文本形式定義所有內容,並應記錄所有代碼並進行版本控制。 您無法編寫組策略設置的腳本,需要在UI中手動進行設置。 在DSC與組策略的爭論中還有其他爭論,例如DSC易於擴展並且本質上是冪等的。

一起使用Puppet和DSC

如果DSC和Puppet非常相似,為什麼要同時使用它們? 在Linux和 Windows 與之並存,Puppet是合乎邏輯的選擇,因為它比DSC更成熟,並且在開發人員社區中有很多支持。 除了管理Linux和 Windows,Puppet可以管理網絡設備(例如Cisco交換機)和雲基礎架構(例如Azure虛擬機)。 Puppet具有受支持的PowerShell DSC模塊,該模塊已經過嚴格測試,並允許您使用Puppet進行配置 Windows 使用DSC的服務器。 儘管可以使用PowerShell DSC來管理Linux,但Puppet可用的龐大模塊庫並未對其進行備份。

Puppet控制台儀表板(Image Credit:Russell Smith)

Puppet控制台儀表板(圖片來源:Russell Smith)

下載用於Puppet的PowerShell DSC模塊時,您將獲得模塊出廠時PowerShell庫中當前可用的所有DSC資源。 因此,在使用Puppet和DSC時,您無需單獨獲取DSC資源並將其安裝在每個客戶端上。 這對於沒有Internet訪問權限的服務器尤其有用。

DSC很棒,但Puppet是一個更成熟的配置管理解決方案。 與DSC不同,Puppet提供了一個儀表板,可以顯示整個環境合規性的明確視圖。 還可以生成報告。 Microsoft的DSC環境分析器(DSCEA)資源為Power BI或HTML格式創建合規性報告,但它是一個需要單獨配置的附加組件。

傀儡清單比DSC同行更簡潔明了。 可以使用鏈接箭頭指示依賴關係,並在從屬資源更改時刷新資源。 傀儡清單可以在運行之前進行驗證,並在應用之前進行模擬更改。

PowerShell DSC不會保留對節點所做更改的記錄。 在每次運行的事件日誌中記錄有關整體操作狀態的信息,您可以手動提取。 如果您選擇使用結果,結果可以存儲在DSC拉取服務器上。 如果您想查看對節點所做的歷史更改,Puppet是一個更好的解決方案。 您可以在Puppet控制台中查看歷史更改,其中包含有關所做更改以及“已更改為”和“已更改為”值的詳細信息。 如果DSC資源無法運行,則錯誤將顯示在控制台中。 您將需要使用DSC工具來了解它失敗的原因,但您將意識到出現了問題。 Puppet還可以更好地集中管理配置,角色和權限。

如果您正在決定如何管理您的基礎架構,Puppet應該在您的雷達上。 即使您不需要管理Linux或其他非Microsoft基礎架構,Puppet也比僅使用DSC的解決方案具有許多優勢。 如果您已經熟悉PowerShell DSC,那麼學習如何編寫Puppet清單並不是一個很大的學習曲線。

微軟對9頻道的主題進行了很好的介紹: 更好的一起:PowerShell所需的狀態配置(DSC)和Puppet。 如果您想了解有關如何將PowerShell DSC和Puppet一起使用的更多信息,請查看。 在接下來的幾周中,我將介紹如何使用Puppet進行管理的一些基礎知識 Windows 服務器開啟 的Petri.

該職位 PowerShell DSC和Puppet - 為什麼它不是/或者 最早出現 的Petri.