about_DesiredStateConfiguration
간단한 설명
PowerShell DSC(필요한 상태 구성) 기능을 간략하게 소개합니다.
자세한 설명
DSC는 소프트웨어 서비스에 대한 구성 데이터를 배포 및 관리하고 이러한 서비스가 실행되는 환경을 관리할 수 있도록 하는 PowerShell의 관리 플랫폼입니다.
DSC는 소프트웨어 환경의 상태를 구성하는 방법을 선언적으로 지정하는 데 사용할 수 있는 PowerShell 언어 확장, 새 cmdlet 및 리소스 집합을 제공합니다. 또한 기존 구성을 유지 관리하고 관리하는 방법을 제공합니다.
DSC는 PowerShell 4.0에 도입되었습니다.
DSC에 대한 자세한 내용은 PowerShell 필요한 상태 구성 개요를 참조 하세요.
클래스를 사용하여 DSC 리소스 개발
PowerShell 5.0부터 클래스를 사용하여 DSC 리소스를 개발할 수 있습니다. 자세한 내용은 about_Classes PowerShell 클래스를 사용하여 사용자 지정 DSC 리소스 작성을 참조하세요.
DSC 사용
DSC를 사용하여 환경을 구성하려면 먼저 Configuration 키워드를 사용하여 PowerShell 스크립트 블록을 정의한 다음 식별자를 정의합니다. 그 다음에는 블록을 구분하는 중괄호 쌍이 뒤따릅니다. 구성 블록 내에서 환경의 각 노드(컴퓨터)에 대해 원하는 구성 상태를 지정하는 노드 블록을 정의할 수 있습니다. 노드 블록은 노드 키워드로 시작하고 그 다음에는 변수가 될 수 있는 대상 컴퓨터의 이름으로 시작합니다. 컴퓨터 이름 뒤에 노드 블록을 구분하는 중괄호를 옵니다. 노드 블록 내에서 리소스 블록을 정의하여 특정 리소스를 구성할 수 있습니다. 리소스 블록은 다음 예제와 같이 리소스의 형식 이름으로 시작하고, 그 뒤에 해당 블록에 대해 지정하려는 식별자, 블록을 구분하는 중괄호로 시작합니다.
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 리소스
구성 스크립트에서 다음 기본 제공 리소스를 사용할 수 있습니다.
속성 | 속성 |
---|---|
파일 | {DestinationPath, 특성, 체크섬, 콘텐츠...} |
보관 | {Destination, Path, Checksum, Credential...} |
환경 | {Name, DependsOn, Ensure, Path...} |
그룹 | {GroupName, Credential, DependsOn, Description...} |
로그 | {Message, DependsOn, PsDscRunAsCredential} |
Package(패키지) | {Name, Path, ProductId, arguments...} |
Registry | {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 | {Arguments, Path, Credential, DependsOn...} |
시스템에서 사용 가능한 DSC 리소스 목록을 얻으려면 cmdlet을 Get-DscResource
실행합니다.
참고 항목
7.0 Get-DscResource
미만의 PowerShell 버전에서는 클래스 기반 DSC 리소스를 찾을 수 없습니다.
이 항목의 예제에서는 파일 및 WindowsFeature 리소스를 사용하는 방법을 보여 줍니다. 리소스와 함께 사용할 수 있는 모든 속성을 보려면 PowerShell ISE의 구성 스크립트 내에서 리소스 키워드(예: 파일)에 커서를 삽입하고 CTRL+다.
추가 리소스 찾기
PowerShell 및 DSC 사용자 커뮤니티 및 Microsoft에서 만든 다른 많은 사용 가능한 DSC 리소스를 다운로드, 설치 및 알아볼 수 있습니다. PowerShell 갤러리 방문하여 사용 가능한 DSC 리소스를 찾아보고 알아보세요.
참고 항목
PowerShell