這很重要
請求伺服器(Windows 功能 DSC-Service)是 Windows Server 支援的元件,但沒有計劃提供新特性或功能。 我們希望你知道,較新版本的 DSC 現已正式發佈,由名為 guest configuration 的 Azure Policy 功能管理。 來賓配置服務結合了 DSC 擴展、Azure 自動化 State Configuration 的功能以及客戶反饋中最常請求的功能。 來賓配置還包括通過 已啟用 Arc 的伺服器提供的混合計算機支援。
Local Configuration Manager (LCM) 可以通過 Pull Service 解決方案進行集中管理。 使用此方法時,正在管理的節點將註冊到服務,並在 LCM 設置中分配配置。 作為配置依賴項的配置和所需的所有 DSC 資源將下載到計算機,並由 LCM 用於管理配置。 有關正在管理的計算機的狀態的資訊將上傳到服務以進行報告。 這個概念被稱為 “pull service”。
拉取服務的目前選項包括:
- Azure 自動化 Desired State Configuration 服務
- 在 Windows Server 上運行的拉取服務
- 社區維護的開源解決方案
- SMB 共用
每個解決方案的建議規模如下:
| 解決方法 | 用戶端節點 |
|---|---|
| 使用 MDB/ESENT 資料庫的 Windows 拉伺服器 | 最多500個節點 |
| 使用 SQL 資料庫的 Windows 拉取伺服器 | 最多3500個節點 |
| Azure 自動化 DSC | 小型和大型環境 |
推薦的解決方案以及具有最多可用功能的選項是 Azure Automation DSC。 尚未確定每個自動化帳戶的節點數上限。
Azure 服務可以管理本地、私有數據中心或公有雲(如 Azure 和 AWS)中的節點。 對於伺服器無法直接連接到 Internet 的私有環境,請考慮將出站流量限製為僅已發佈的 Azure IP 範圍(請參閱 Azure IP 範圍和服務標記)。
Windows Server 上的拉取服務中當前不可用的連線服務功能包括:
- 所有數據在傳輸中和靜態時都經過加密
- 用戶端證書是自動創建和管理的
- 用於集中管理 密碼/憑據或 變數 (如伺服器名稱或連接字串)的密鑰存儲
- 集中管理節點 LCM 配置
- 將配置集中分配給客戶端節點
- 發佈對 「Canary groups」 的配置更改,以便在進入生產環境之前進行測試
- 圖形報告
- DSC 資源粒度級別的狀態詳細資訊
- 來自用戶端電腦的詳細錯誤消息,用於故障排除
- 與 Azure Log Analytics 集成 以發出警報、自動執行任務,與 Android/iOS 應用程式整合以用於報告和警報
Windows Server 中的 DSC 拉取服務
可以將 Pull 服務配置為在 Windows Server 上運行。 請注意,Windows Server 中包含的拉取服務解決方案僅包括存儲配置和模組以供下載和將報表數據捕獲到資料庫的功能。 它不包括 Azure 中的服務提供的許多功能,因此,它不是評估如何使用服務的好工具。
Windows Server 中提供的拉取服務是 IIS 中的一項 Web 服務,它使用 OData 介面使 DSC 配置檔在目標節點請求時可供目標節點使用。
使用拉伺服器的要求:
- 執行以下位置的伺服器:
- WMF/PowerShell 4.0 或更高版本
- IIS 伺服器角色
- DSC 服務
- 理想情況下,使用一些生成證書的方法,以保護傳遞給目標節點上的本地配置管理員 (LCM) 的憑證
將 Windows Server 配置為託管拉取服務的最佳方法是使用 DSC 配置。 下面提供了一個示例腳本。
支援的資料庫系統
從 Windows Server 版本 17090 開始,WMF 5.1 包括對拉取服務(Windows 功能 DSC-Service)的 SQL Server 選項的支援。 這為縮放尚未遷移到 Azure 自動化 DSC 的大型 DSC 環境提供了一個新選項。
要將請求伺服器配置為使用 SQL Server,請將 SqlProvider 設置為 $true 有效的 SQL Server 連接字串,並將 SqlConnectionString 設置為有效的 SQL Server 連接字符串。 有關更多資訊,請參閱 SqlClient 連接字串。 有關使用 xDscWebService 配置 SQL Server 的示例,請先閱讀 使用 xDscWebService 資源 ,然後查看 GitHub 上的 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 。
使用 xDscWebService 資源
設置 Web 拉取伺服器的最簡單方法是使用 xPSDesiredStateConfiguration 模組中包含的 xDscWebService 資源。 以下步驟說明如何在設置 Web 服務的 中使用 Configuration 資源。
調用 Install-Module cmdlet 以安裝 xPSDesiredStateConfiguration 模組。
從組織內或公共機構內的受信任的證書頒發機構獲取 DSC Pull 伺服器的 SSL 證書。 從頒發機構收到的證書通常採用 PFX 格式。
將證書安裝在將成為 DSC 拉取伺服器的節點上,預設位置應為
CERT:\LocalMachine\My. 記下證書指紋。選擇要用作註冊金鑰的 GUID。 要使用 PowerShell 生成一個,請在 PS 提示符處輸入以下內容,然後按 Enter:
[guid]::newGuid()或New-Guid. 此金鑰將被用戶端節點用作共用金鑰,以便在註冊期間進行身份驗證。 有關更多資訊,請參閱下面的 註冊金鑰 部分。在 PowerShell ISE 中,啟動 (F5) 以下配置腳本(包含在 xPSDesiredStateConfiguration 模組的資料夾中。
Sample_xDscWebServiceRegistration.ps1此文稿設置請求伺服器。
configuration Sample_xDscWebServiceRegistration { param ( [string[]]$NodeName = 'localhost', [ValidateNotNullOrEmpty()] [string] $certificateThumbPrint, [Parameter(HelpMessage='This should be a string with enough entropy (randomness)' + ' to protect the registration of clients to the pull server. We will use new' + ' GUID by default.' )] [ValidateNotNullOrEmpty()] [string] $RegistrationKey # A guid that clients use to initiate conversation with pull server ) Import-DSCResource -ModuleName PSDesiredStateConfiguration Import-DSCResource -ModuleName xPSDesiredStateConfiguration Node $NodeName { WindowsFeature DSCServiceFeature { Ensure = "Present" Name = "DSC-Service" } xDscWebService PSDSCPullServer { Ensure = "Present" EndpointName = "PSDSCPullServer" Port = 8080 PhysicalPath = "$env:SystemDrive\inetpub\PSDSCPullServer" CertificateThumbPrint = $certificateThumbPrint ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules" ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration" State = "Started" DependsOn = "[WindowsFeature]DSCServiceFeature" RegistrationKeyPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService" AcceptSelfSignedCertificates = $true UseSecurityBestPractices = $true Enable32BitAppOnWin64 = $false } File RegistrationKeyFile { Ensure = 'Present' Type = 'File' DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt" Contents = $RegistrationKey } } }運行配置,將 SSL 證書的指紋作為 certificateThumbPrint 參數傳遞,並將 GUID 註冊金鑰作為 RegistrationKey 參數傳遞:
# To find the Thumbprint for an installed SSL certificate for use with the pull server list all # certificates in your local store and then copy the thumbprint for the appropriate certificate # by reviewing the certificate subjects dir Cert:\LocalMachine\my # Then include this thumbprint when running the configuration $sample_xDscWebServiceRegistrationSplat = @{ certificateThumbprint = 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC' RegistrationKey = '140a952b-b9d6-406b-b416-e0f759c9c0e4' OutputPath = 'C:\Configs\PullServer' } Sample_xDscWebServiceRegistration @sample_xDscWebServiceRegistrationSplat # Run the compiled configuration to make the target node a DSC Pull Server Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
註冊碼
要允許客戶端節點向伺服器註冊,以便它們可以使用配置名稱而不是配置 ID,由上述配置創建的註冊金鑰將儲存在名為 RegistrationKeys.txt in 的 C:\Program Files\WindowsPowerShell\DscService檔案中。 註冊金鑰用作用戶端向請求伺服器進行初始註冊期間使用的共用金鑰。 用戶端將生成一個自簽名證書,該證書用於在成功完成註冊后對請求伺服器進行唯一身份驗證。 此證書的指紋存儲在本地,並與請求伺服器的URL相關聯。
備註
PowerShell 4.0 不支持註冊密鑰。
為了配置節點以向 pull 伺服器進行身份驗證,註冊金鑰需要位於將向此 pull 伺服器註冊的任何目標節點的元配置中。 請注意,在目標計算機成功註冊后,將刪除下面元配置中的 RegistrationKey ,並且該值必須與拉伺服器上檔中存儲 RegistrationKeys.txt 的值匹配(本例中為“140a952b-b9d6-406b-b416-e0f759c9c0e4”)。 始終安全地處理註冊金鑰值,因為知道它允許任何目標計算機向請求伺服器註冊。
[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
param
(
[ValidateNotNullOrEmpty()]
[string] $NodeName = 'localhost',
# the key used to set up pull server in previous configuration
[ValidateNotNullOrEmpty()]
[string] $RegistrationKey,
# The name of the pull server, same as $NodeName used in previous configuration
[ValidateNotNullOrEmpty()]
[string] $ServerName = 'localhost'
)
Node $NodeName
{
Settings
{
RefreshMode = 'Pull'
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc"
RegistrationKey = $RegistrationKey
ConfigurationNames = @('ClientConfig')
}
ReportServerWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc"
RegistrationKey = $RegistrationKey
}
}
}
$MetaConfigurationSplat = @{
RegistrationKey = $RegistrationKey
OutputPath = 'c:\Configs\TargetNodes'
}
Sample_MetaConfigurationToRegisterWithLessSecurePullServer @MetaConfigurationSplat
備註
ReportServerWeb 部分允許將報告數據發送到請求伺服器。
元配置檔中缺少 ConfigurationID 屬性隱式意味著 pull 伺服器支援 V2 版本的pull server協定,因此需要初始註冊。 相反,存在 ConfigurationID 意味著使用請求伺服器協定的 V1 版本,並且沒有註冊處理。
備註
在PUSH場景中,當前版本中存在一個錯誤,使得有必要在元配置檔中為從未向pull伺服器註冊的節點定義 ConfigurationID 屬性。 這將強制使用 V1 Pull Server 協定並避免註冊失敗消息。
放置配置和資源
請求伺服器設置完成後,請求伺服器配置中的 ConfigurationPath 和 ModulePath 屬性定義的資料夾將用於放置可供目標節點請求使用的模組和配置。 這些檔需要採用特定格式,以便 Pull 伺服器能夠正確處理它們。
DSC 資源模組包格式
每個資源模組都需要根據以下模式 <Module Name>_<Module Version>.zip進行壓縮和命名。
例如模組版本為 3.1.2.0 且名為 xWebAdminstration 的模組將被命名為 xWebAdministration_3.1.2.0.zip。 模組的每個版本都必須包含在單個 zip 檔中。
由於每個 zip 檔中只有一個資源版本,因此不支援在 WMF 5.0 中添加的模組格式,並支援在單個目錄中使用多個模組版本。 這意味著,在打包 DSC 資源模組以用於請求伺服器之前,您需要對目錄結構進行少量更改。 WMF 5.0 中包含 DSC 資源的模組的預設格式為 <Module Folder>\<Module Version>\DscResources\<DSC Resource Folder>\。 在打包要求伺服器之前,請刪除該 <Module version> 資料夾,使路徑變為 <Module Folder>\DscResources\<DSC Resource Folder>\。 通過此更改,如上所述壓縮資料夾,並將這些 zip 檔放在 ModulePath 資料夾中。
用於 New-DscChecksum <module zip file> 為新添加的模組創建校驗和檔。
配置MOF格式
配置MOF檔需要與校驗和檔配對,以便目標節點上的LCM可以驗證配置。 若要創建校驗和,請調用 New-DscChecksum cmdlet。 cmdlet 採用 Path 參數,該參數指定配置MOF所在的資料夾。 該 cmdlet 將創建一個名為 ConfigurationMOFName.mof.checksum的校驗和檔,其中 ConfigurationMOFName 是配置 mof 檔的名稱。 如果指定資料夾中有多個配置MOF檔,則會為該資料夾中的每個配置創建一個校驗和。 將MOF檔及其關聯的校驗和檔放在 ConfigurationPath 資料夾中。
備註
如果您以任何方式更改了配置MOF檔,則還必須重新創建校驗和檔。
工具製造
要設置、驗證和管理請求伺服器,請使用最新版本的 xPSDesiredStateConfiguration 模組中包含的以下工具作為範例:
一個模組,可説明打包 DSC 資源模組和設定檔,以便在請求伺服器上使用。 PublishModulesAndMofsToPullServer.psm1 的 PublishModulesAndMofsToPullServer.psm1 中。 示例如下:
# Example 1 - Package all versions of given modules installed locally and # MOF files are in c:\LocalDepot $moduleList = @('xWebAdministration', 'xPhp') Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList # Example 2 - Package modules and mof documents from c:\LocalDepot Publish-DSCModuleAndMof -Source C:\LocalDepot -Force驗證請求伺服器配置是否正確的腳本。 PullServerSetupTests.ps1.
拉取服務的社區解決方案
DSC 社區編寫了多個解決方案來實現拉取服務協定。 對於本地環境,這些解決方案提供了拉取服務功能,並有機會通過增量增強功能回饋社區。
拉取客戶端配置
以下主題詳細介紹了設置請求用戶端: