about_DesiredStateConfiguration
간단한 설명
PowerShell DSC(Desired State Configuration) 기능을 간략하게 소개합니다.
자세한 설명
DSC는 소프트웨어 서비스에 대한 구성 데이터를 배포 및 관리하고 이러한 서비스가 실행되는 환경을 관리할 수 있는 PowerShell의 관리 플랫폼입니다.
DSC는 소프트웨어 환경의 상태를 구성하는 방법을 선언적으로 지정하는 데 사용할 수 있는 PowerShell 언어 확장, 새 cmdlet 및 리소스 집합을 제공합니다. 또한 기존 구성을 유지하고 관리하는 수단을 제공합니다.
DSC는 PowerShell 4.0에 도입되었습니다.
DSC에 대한 자세한 내용은 TechNet 라이브러리의 PowerShell Desired State Configuration 개요를 참조하세요.
클래스를 사용하여 DSC 리소스 개발
PowerShell 5.0부터 클래스를 사용하여 DSC 리소스를 개발할 수 있습니다. 자세한 내용은 about_Classes 및 Microsoft TechNet 에서 PowerShell 클래스를 사용하여 사용자 지정 DSC 리소스 작성을 참조하세요.
DSC 사용
DSC를 사용하여 환경을 구성하려면 먼저 Configuration 키워드(keyword) 사용하여 PowerShell 스크립트 블록을 정의한 다음 식별자를 정의한 다음 블록을 구분하는 중괄호 쌍을 차례로 정의합니다. 구성 블록 내에서 환경의 각 노드(컴퓨터)에 대해 원하는 구성 상태를 지정하는 노드 블록을 정의할 수 있습니다. 노드 블록은 노드 키워드(keyword) 시작하고 대상 컴퓨터의 이름(변수일 수 있습니다)으로 시작합니다. 컴퓨터 이름 뒤에 노드 블록을 구분하는 중괄호가 표시됩니다. 노드 블록 내에서 리소스 블록을 정의하여 특정 리소스를 구성할 수 있습니다. 리소스 블록은 리소스의 형식 이름으로 시작하고, 그 뒤에 해당 블록에 대해 지정하려는 식별자, 다음 예제와 같이 블록을 구분하는 중괄호로 시작합니다.
Configuration MyWebConfig {
# Parameters are optional
param ($MachineName, $WebsiteFilePath)
# A Configuration block can have one or more Node blocks
Node $MachineName
{
# Next, specify one or more resource blocks
# WindowsFeature is one of the resources you can use in a Node block
# This example ensures the Web Server (IIS) role is installed
WindowsFeature IIS
{
# To ensure that the role is not installed, set Ensure to "Absent"
Ensure = "Present"
Name = "Web-Server" # Use the Name property from Get-WindowsFeature
}
# You can use the File resource to create files and folders
# "WebDirectory" is the name you want to use to refer to this instance
File WebDirectory
{
Ensure = "Present" # You can also set Ensure to "Absent"
Type = "Directory" # Default is "File"
Recurse = $true
SourcePath = $WebsiteFilePath
DestinationPath = "C:\inetpub\wwwroot"
# Ensure that the IIS block is successfully run first before
# configuring this resource
DependsOn = "[WindowsFeature]IIS" # Use for dependencies
}
}
}
구성을 만들려면 PowerShell 함수를 호출하는 것과 동일한 방식으로 구성 블록을 호출하여 정의했을 수 있는 예상 매개 변수를 전달합니다(위의 예제에서 두 개). 예를 들어 이 경우 다음을 수행합니다.
MyWebConfig -MachineName "TestMachine" -WebsiteFilePath `
"\\filesrv\WebFiles" -OutputPath "C:\Windows\system32\temp"
# OutputPath is optional
그러면 지정한 경로에서 노드당 MOF 파일이 생성됩니다. 이러한 MOF 파일은 각 노드에 대해 원하는 구성을 지정합니다. 다음으로, 다음 cmdlet을 사용하여 구성 MOF 파일을 구문 분석하고, 각 노드에 해당 구성을 보내고, 해당 구성을 적용합니다. 클래스 기반 DSC 리소스에 대한 별도의 MOF 파일을 만들 필요가 없습니다.
Start-DscConfiguration -Verbose -Wait -Path "C:\Windows\system32\temp"
DSC를 사용하여 구성 상태 유지 관리
DSC를 사용하면 구성이 idempotent입니다. 즉, DSC를 사용하여 동일한 구성을 두 번 이상 적용하는 경우 결과 구성 상태는 항상 동일합니다. 이 때문에 환경의 노드가 원하는 구성 상태에서 드리프트되었을 수 있다고 의심되는 경우 동일한 DSC 구성을 다시 적용하여 원하는 상태로 되돌릴 수 있습니다. 상태가 원하는 상태에서 드리프트된 리소스만 처리하도록 구성 스크립트를 수정할 필요가 없습니다.
다음 예제에서는 지정된 노드의 실제 구성 상태가 노드에서 시행된 마지막 DSC 구성에서 드리프트되었는지 여부를 확인하는 방법을 보여 줍니다. 이 예제에서는 로컬 컴퓨터의 구성을 확인합니다.
$session = New-CimSession -ComputerName "localhost"
Test-DscConfiguration -CimSession $session
기본 제공 DSC 리소스
구성 스크립트에서 다음 기본 제공 리소스를 사용할 수 있습니다.
Name | 속성 |
---|---|
파일 | {DestinationPath, Attributes, Checksum, Content...} |
보관 | {Destination, Path, Checksum, Credential...} |
Environment | {Name, DependsOn, Ensure, Path...} |
그룹화 | {GroupName, Credential, DependsOn, Description...} |
로그 | {Message, DependsOn, PsDscRunAsCredential} |
패키지 | {Name, Path, ProductId, Arguments...} |
레지스트리 | {Key, ValueName, DependsOn, Ensure...} |
스크립트 | {GetScript, SetScript, TestScript, Credential...} |
서비스 | {Name, BuiltInAccount, Credential, Dependencies...} |
사용자 | {UserName, DependsOn, Description, Disabled...} |
WaitForAll | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForAny | {NodeName, ResourceName, DependsOn, PsDscRunAsC...} |
WaitForSome | {NodeCount, NodeName, ResourceName, DependsOn...} |
WindowsFeature | {Name, Credential, DependsOn, Ensure...} |
WindowsOptionalFeature | {Name, DependsOn, Ensure, LogLevel...} |
WindowsProcess | {인수, 경로, 자격 증명, DependsOn...} |
시스템에서 사용 가능한 DSC 리소스 목록을 얻으려면 Get-DscResource cmdlet을 실행합니다.
이 항목의 예제에서는 파일 및 WindowsFeature 리소스를 사용하는 방법을 보여 줍니다. 리소스와 함께 사용할 수 있는 모든 속성을 보려면 PowerShell ISE의 구성 스크립트 내에서 리소스 키워드(keyword)(예: 파일)에 커서를 삽입하고 Ctrl 키를 누른 채 스페이스바를 누릅니다.
추가 리소스 찾기
PowerShell 및 DSC 사용자 커뮤니티 및 Microsoft에서 만든 사용 가능한 다른 많은 DSC 리소스에 대해 다운로드, 설치 및 알아볼 수 있습니다. PowerShell 갤러리 방문하여 사용 가능한 DSC 리소스를 찾아보고 알아봅니다.
참고 항목
PowerShell Desired State Configuration 개요