중요합니다
끌어오기 서버(Windows 기능 DSC-Service)는 Windows Server에서 지원되는 구성 요소이지만 새로운 기능을 제공할 계획은 없습니다. 이제 최신 버전의 DSC가 일반 공급되며, 게스트 구성이라는 Azure Policy 기능으로 관리된다는 사실을 알아두셨으면 합니다. 게스트 구성 서비스는 DSC 확장, Azure Automation State Configuration 및 고객 피드백에서 가장 일반적으로 요청되는 기능을 결합합니다. 게스트 구성에는 Arc 지원 서버를 통한 하이브리드 머신 지원도 포함됩니다.
LCM(로컬 구성 관리자)은 풀 서비스 솔루션을 통해 중앙에서 관리할 수 있습니다. 이 방법을 사용하는 경우 관리되는 노드는 서비스에 등록되고 LCM 설정에서 구성이 할당됩니다. 구성에 대한 종속성으로 필요한 구성 및 모든 DSC 리소스는 컴퓨터에 다운로드되고 LCM에서 구성을 관리하는 데 사용됩니다. 관리되는 컴퓨터의 상태에 대한 정보는 보고를 위해 서비스에 업로드됩니다. 이 개념을 "끌어오기 서비스"라고 합니다.
풀 서비스에 대한 현재 옵션은 다음과 같습니다.
- Azure Automation 필요한 상태 구성 서비스
- Windows Server에서 실행되는 끌어오기 서비스
- 커뮤니티에서 유지 관리하는 오픈 소스 솔루션
- SMB 공유
각 솔루션에 권장되는 배율은 다음과 같습니다.
해결 방법 | 클라이언트 노드 |
---|---|
MDB/ESENT 데이터베이스를 사용하는 Windows 끌어오기 서버 | 최대 500개의 노드 |
SQL 데이터베이스를 사용하는 Windows 끌어오기 서버 | 최대 3500개의 노드 |
Azure 자동화 DSC | 소규모 환경과 대규모 환경 모두 |
권장 솔루션과 사용 가능한 가장 많은 기능이 있는 옵션은 Azure Automation DSC입니다. Automation 계정당 노드 수에 대한 상한은 확인되지 않았습니다.
Azure 서비스는 프라이빗 데이터 센터 또는 Azure 및 AWS와 같은 퍼블릭 클라우드에서 온-프레미스로 노드를 관리할 수 있습니다. 서버가 인터넷에 직접 연결할 수 없는 프라이빗 환경의 경우 아웃바운드 트래픽을 게시된 Azure IP 범위로만 제한하는 것이 좋습니다( Azure IP 범위 및 서비스 태그 참조).
현재 Windows Server의 풀 서비스에서 사용할 수 없는 온라인 서비스의 기능은 다음과 같습니다.
- 모든 데이터는 전송 및 저장 중에 암호화됩니다.
- 클라이언트 인증서는 자동으로 생성되고 관리됩니다.
- 암호/자격 증명 또는 서버 이름 또는 연결 문자열과 같은 변수를 중앙에서 관리하기 위한 비밀 저장소
- 노드 LCM 구성을 중앙에서 관리
- 중앙에서 클라이언트 노드에 구성 할당
- 프로덕션에 도달하기 전에 테스트를 위해 구성 변경 사항을 "카나리아 그룹"으로 릴리스합니다.
- 그래픽 보고
- DSC 리소스 세분성 수준의 상태 세부 정보
- 문제 해결을 위한 클라이언트 컴퓨터의 자세한 오류 메시지
- 경고, 자동화된 작업을 위한 Azure Log Analytics, 보고 및 경고를 위한 Android/iOS 앱과의 통합
Windows Server의 DSC 끌어오기 서비스
Windows Server에서 실행되도록 끌어오기 서비스를 구성할 수 있습니다. Windows Server에 포함된 끌어오기 서비스 솔루션에는 다운로드를 위한 구성 및 모듈을 저장하고 보고서 데이터를 데이터베이스에 캡처하는 기능만 포함되어 있습니다. Azure의 서비스에서 제공하는 많은 기능이 포함되어 있지 않으므로 서비스 사용 방법을 평가하는 데 좋은 도구가 아닙니다.
Windows Server에서 제공되는 끌어오기 서비스는 OData 인터페이스를 사용하여 해당 노드가 요청할 때 대상 노드에서 DSC 구성 파일을 사용할 수 있도록 하는 IIS의 웹 서비스입니다.
끌어오기 서버를 사용하기 위한 요구 사항:
- 다음을 실행하는 서버:
- WMF/PowerShell 4.0 이상
- IIS 서버 역할
- DSC 서비스
- 이상적으로는 대상 노드의 LCM(로컬 구성 관리자)에 전달된 자격 증명을 보호하기 위해 인증서를 생성하는 몇 가지 방법입니다
끌어오기 서비스를 호스트하도록 Windows Server를 구성하는 가장 좋은 방법은 DSC 구성을 사용하는 것입니다. 예제 스크립트가 아래에 제공됩니다.
지원되는 데이터베이스 시스템
Windows Server 릴리스 17090부터 WMF 5.1에는 끌어오기 서비스(Windows 기능 DSC-Service)에 대한 SQL Server 옵션에 대한 지원이 포함됩니다. 이는 Azure Automation DSC로 마이그레이션되지 않은 대규모 DSC 환경의 크기를 조정하기 위한 새로운 옵션을 제공합니다.
SQL Server를 사용하도록 끌어오기 서버를 구성하려면 SqlProvider 를 유효한 SQL Server 연결 문자열로 $true
설정하고 SqlConnectionString 을 설정합니다. 자세한 내용은 SqlClient 연결 문자열을 참조하십시오.
xDscWebService를 사용한 SQL Server 구성의 예는 먼저 xDscWebService 리소스 사용을 읽은 다음 GitHub에서 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 검토하세요.
xDscWebService 리소스 사용
웹 끌어오기 서버를 설정하는 가장 쉬운 방법은 xPSDesiredStateConfiguration 모듈에 포함된 xDscWebService 리소스를 사용하는 것입니다. 다음 단계에서는 웹 서비스를 설정하는 리소스 Configuration
에서 리소스를 사용하는 방법을 설명합니다.
Install-Module cmdlet을 호출하여 xPSDesiredStateConfiguration 모듈을 설치합니다.
조직 또는 공용 기관 내의 신뢰할 수 있는 인증 기관에서 DSC 끌어오기 서버에 대한 SSL 인증서를 가져옵니다. 기관에서 받은 인증서는 일반적으로 PFX 형식입니다.
DSC 끌어오기 서버가 될 노드에 인증서를 기본 위치에
CERT:\LocalMachine\My
설치합니다. 인증서 지문을 기록해 둡니다.등록 키로 사용할 GUID를 선택합니다. PowerShell을 사용하여 생성하려면 PS 프롬프트에 다음을 입력하고 Enter
[guid]::newGuid()
키를New-Guid
누릅니다. 또는 . 이 키는 클라이언트 노드에서 등록 중에 인증하기 위한 공유 키로 사용됩니다. 자세한 내용은 아래의 등록 키 섹션을 참조하십시오.PowerShell ISE에서 다음 구성 스크립트(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
C:\Program Files\WindowsPowerShell\DscService
파일에 저장됩니다. 등록 키는 클라이언트가 끌어오기 서버에 처음 등록하는 동안 사용되는 공유 암호로 작동합니다. 클라이언트는 등록이 성공적으로 완료되면 끌어오기 서버에 고유하게 인증하는 데 사용되는 자체 서명된 인증서를 생성합니다. 이 인증서의 지문은 로컬에 저장되고 끌어오기 서버의 URL과 연결됩니다.
비고
등록 키는 PowerShell 4.0에서 지원되지 않습니다.
끌어오기 서버를 사용하여 인증하도록 노드를 구성하려면 이 끌어오기 서버에 등록할 대상 노드의 메타 구성에 등록 키가 있어야 합니다. 아래 메타 구성의 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 속성이 없다는 것은 끌어오기 서버가 V2 버전의 끌어오기 서버 프로토콜을 지원하므로 초기 등록이 필요하다는 것을 암시적으로 의미합니다. 반대로 ConfigurationID 가 있다는 것은 V1 버전의 끌어오기 서버 프로토콜이 사용되고 등록 처리가 없음을 의미합니다.
비고
PUSH 시나리오에서는 끌어오기 서버에 등록한 적이 없는 노드에 대한 메타 구성 파일에서 ConfigurationID 속성을 정의해야 하는 버그가 현재 릴리스에 있습니다. 이렇게 하면 V1 끌어오기 서버 프로토콜이 강제로 적용되고 등록 실패 메시지가 표시되지 않습니다.
구성 및 리소스 배치
끌어오기 서버 설정이 완료되면 끌어오기 서버 구성의 ConfigurationPath 및 ModulePath 속성으로 정의된 폴더는 대상 노드에서 끌어올 수 있는 모듈 및 구성을 배치하는 위치에 있습니다. 이러한 파일은 끌어오기 서버에서 올바르게 처리할 수 있도록 특정 형식이어야 합니다.
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 <Module Folder>\<Module Version>\DscResources\<DSC Resource Folder>\
에서 DSC 리소스를 포함하는 모듈의 기본 형식은 입니다. 끌어오기 서버를 위해 패키징하기 전에 경로를 가 가 되도록 <Module Folder>\DscResources\<DSC Resource Folder>\
폴더를 제거합니다<Module version>
. 이 변경으로 위에서 설명한 대로 폴더를 압축하고 이러한 zip 파일을 ModulePath 폴더에 배치합니다.
새로 추가된 모듈에 대한 체크섬 파일을 만드는 데 사용합니다 New-DscChecksum <module zip file>
.
구성 MOF 형식
대상 노드의 LCM이 구성의 유효성을 검사할 수 있도록 구성 MOF 파일을 체크섬 파일과 쌍을 이루어야 합니다. 체크섬을 만들려면 New-DscChecksum cmdlet을 호출합니다. cmdlet은 구성 MOF가 있는 폴더를 지정하는 Path 매개 변수를 사용합니다. cmdlet은 라는 ConfigurationMOFName.mof.checksum
체크섬 파일을 만들며, 여기서 ConfigurationMOFName
는 구성 mof 파일의 이름입니다. 지정된 폴더에 구성 MOF 파일이 두 개 이상 있는 경우 폴더의 각 구성에 대해 체크섬이 만들어집니다. MOF 파일 및 관련 체크섬 파일을 ConfigurationPath 폴더에 배치합니다.
비고
어떤 식으로든 구성 MOF 파일을 변경하는 경우 체크섬 파일도 다시 만들어야 합니다.
공구 제작
끌어오기 서버를 설정, 유효성 검사 및 관리하려면 최신 버전의 xPSDesiredStateConfiguration 모듈에 예제로 포함된 다음 도구를 사용합니다.
끌어오기 서버에서 사용하기 위해 DSC 리소스 모듈 및 구성 파일을 패키징하는 데 도움이 되는 모듈입니다. 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.
Pull 서비스를 위한 커뮤니티 솔루션
DSC 커뮤니티는 끌어오기 서비스 프로토콜을 구현하기 위한 여러 솔루션을 작성했습니다. 온-프레미스 환경의 경우 끌어오기 서비스 기능과 점진적 향상을 통해 커뮤니티에 다시 기여할 수 있는 기회를 제공합니다.
끌어오기 클라이언트 구성
다음 항목에서는 끌어오기 클라이언트 설정에 대해 자세히 설명합니다.
- 구성 ID를 사용하여 DSC 끌어오기 클라이언트 설정Set up a DSC pull client using a configuration ID
- 구성 이름을 사용하여 DSC 끌어오기 클라이언트 설정Set up a DSC pull client using configuration names
- 부분 구성