PowerShell DSC(원하는 상태 구성)란 무엇입니까? 전체 가이드 및 크로스 플랫폼 DSC와의 차이점

마지막 업데이트 : 16/10/2025
저자 : 이삭
  • DSC는 선언적이고 멱등적인 모델입니다. 즉, 상태를 설명하고 엔진은 이에 수렴합니다.
  • PSDSC는 MOF와 LCM을 사용합니다. Windows; 현재 DSC는 크로스 플랫폼이며 JSON/YAML을 사용합니다.
  • 대규모 오케스트레이션을 위해 Azure Automation, WinGet 및 기타 도구와 통합됩니다.
  • 모범 사례: 모듈화, 버전 제어, 테스트 및 NIST/FISMA와의 정렬.

PowerShell DSC 원하는 상태 구성

Windows 시스템을 관리하는 경우 Linux 또는 macOS를 사용한다면, 조만간 원하는 상태라는 개념을 접하게 될 것입니다. PowerShell을 DSC(Desired State Configuration)는 해당 상태를 표현하고 유지하는 가장 직접적인 방법입니다. 시간, 두려움을 피하고, 편차를 수정하고, 배치를 가속화합니다. 여기에서 다음을 찾을 수 있습니다. 완전한 가이드실제 사례와 기존 PowerShell DSC와 최신 크로스 플랫폼 DSC의 차이점을 소개합니다.

공식적인 정의를 넘어 DSC를 서버에 대한 약속으로 생각해 보세요. '나는 너를 이렇게 배치하고 싶어. 그리고 네가 변하면, 너를 원래 있던 곳으로 돌려보낼 거야.'가장 좋은 점은 이 약속이 선언적이고 멱등적이라는 것입니다. 즉, 결과를 설명하면 엔진이 해당 위치에 도달하고 해당 위치에 머무르는 작업을 처리하며, 동일한 구성을 몇 번이나 실행하더라도 마찬가지입니다.

DSC란 무엇이고 왜 관심을 가져야 할까요?

DSC는 선언적 구성 플랫폼입니다. 선언적 당신이 원하는 상태를 설명하기 때문에 (활성 서비스, 역할 및 기능, 패키지, 파일, 레지스트리 키 등)을 달성하기 위한 일련의 힘든 단계가 아닙니다. 엔진은 현재 상태와 원하는 상태를 비교하고 수렴을 위해 최소한의 변경만 수행합니다.

기본 단위는 자원입니다. DSC 리소스는 어떤 것의 상태를 '가져오기', '테스트하기', '설정하기'하는 방법을 캡슐화합니다.: 서비스, 파일, Active Directory의, SQL Server 등. 이 Get/Test/Set 인터페이스를 사용하면 노드가 이미 제대로 되어 있는지 확인하고, 그렇지 않은 경우 변경 사항을 적용할 수 있습니다.

클래식 PowerShell DSC(PSDSC)에서 결합 구성 요소는 로컬 구성 관리자(LCM)입니다. LCM은 구성을 적용하고 모니터링하며 주기적으로 다시 적용할 수 있는 엔진입니다.푸시 모드(구성을 푸시) 또는 풀 모드(노드가 풀 서버에서 구성을 다운로드)로 작동합니다.

DSC는 CIM, IMO 등의 관리 표준에 의해 지원됩니다. 이러한 개방형 기반은 상호 운용성을 용이하게 하고 타사 도구가 마찰 없이 공존할 수 있게 해줍니다.인프라에 다양한 제조업체와 플랫폼이 섞여 있는 경우 이는 매우 중요합니다.

PowerShell DSC(PSDSC)와 현재 크로스 플랫폼 DSC의 차이점

PSDSC와 크로스 플랫폼 DSC의 차이점

최근 몇 년 동안 Microsoft는 PowerShell과 Windows를 넘어서는 DSC를 추진해 왔습니다. 이 '새로운' DSC는 Windows, Linux 및 macOS에서 실행되며 명령줄 도구를 사용하여 호출됩니다. 명령 DSCPowerShell이나 PSDesiredStateConfiguration 모듈에 의존하지 않고도 가능합니다.

  • PowerShell 독립성현재 DSC에는 PowerShell이 ​​필요하지 않습니다. 하지만 어댑터를 사용하여 PSDSC 리소스를 사용할 수 있습니다. Microsoft.DSC/PowerShell PowerShell 클래스의 리소스 및 Microsoft.Windows/WindowsPowerShell Windows PowerShell을 사용하는 사람들을 위해.
  • 문서 형식PSDSC에서는 구성이 MOF로 컴파일됩니다. 현재 DSC에서는 구성 문서와 리소스 스키마가 JSON 또는 YAML로 정의됩니다.
  • 실행 모델: PSDSC는 서비스로 실행되어 상태를 유지할 수 있는 LCM을 제공합니다. 최신 DSC는 명령으로 호출됩니다. LCM이나 레지던트 서비스는 포함되지 않습니다..
  • 다국어: bash에서 리소스를 작성할 수 있습니다. Python, C#, Rust 또는 원하는 언어를 사용하세요. 쉘이 아닌 플랫폼에 초점을 맞춥니다..
  • 통합: 크로스 플랫폼 DSC는 WinGet, Microsoft Dev Box, Azure Machine Configuration 등의 도구와 통합할 수 있는 JSON 스키마를 제공합니다.
  MDT 사용에 대한 완벽한 가이드: Windows 시스템 배포, 자동화 및 고급 관리

간단히 말해, PSDSC는 Windows에서 핵심적인 역할을 하며 OS 및 역할 관리에 매우 적합합니다. 크로스 플랫폼 DSC는 하이브리드 조직에 이상적인 더 광범위하고 휴대성이 뛰어나며 언어에 구애받지 않는 경로를 제공합니다..

Windows에서 지원되는 시스템 및 요구 사항

Windows에서의 기존 DSC 구현은 기본적으로 또는 Windows 관리 프레임워크를 통해 사용할 수 있습니다. Windows 10 외에도 Windows Server 2016, 2019 및 2022가 지원됩니다. 윈도우 11. 최신 버전이 없는 환경에서 권장되는 패키지는 다음과 같습니다. WMF 5.1.

중요한 예외가 하나 있습니다. Microsoft Hyper-V Server(독립형 제품)에는 DSC가 포함되어 있지 않습니다.따라서 PSDSC 또는 Azure Automation State Configuration을 사용하여 관리할 수 없습니다.

원격으로 작동하려면 Windows에 WinRM이 올바르게 구성되어 있어야 합니다. 관리자 권한으로 실행하여 활성화할 수 있습니다. Set-WsManQuickConfig -Force이렇게 하면 로컬호스트에서 설정을 적용하더라도 컴퓨터가 원격 PowerShell 명령을 수신할 수 있도록 준비됩니다.

진단이 필요한 경우 Windows의 DSC 이벤트가 기록됩니다. Microsoft-Windows-Dsc/Operational. 활성화될 수 있습니다 로그 더 심층적으로 디버깅해야 할 때 고급 디버깅을 위해 추가로 제공됩니다.

Windows에서 PowerShell DSC 시작하기

기본 제공 리소스로 시작하여 PowerShell 갤러리에서 모듈을 추가하는 것이 일반적입니다. 'PSDscResources' 모듈은 일반적인 시나리오를 다루는 최신 리소스를 제공합니다.:

# Instalar recursos DSC desde PowerShell Gallery
Install-Module 'PSDscResources' -Verbose

PSDSC 구성은 키워드로 정의됩니다. Configuration MOF로 컴파일합니다. 아래는 환경 변수를 생성하고 해당 변수가 존재하는지 확인하는 예입니다.:

Configuration CrearVariableEntorno {
  param ()
  Import-DscResource -ModuleName 'PSDscResources'
  Node localhost {
    Environment CrearRutaVariableEntorno {
      Name   = 'CrearVariableEntorno'
      Value  = 'Hola mundo'
      Ensure = 'Present'
      Path   = $true
      Target = @('Process','Machine')
    }
  }
}

# Compilar el MOF en una carpeta de salida
CrearVariableEntorno -OutputPath './CrearVariableEntorno'

MOF가 생성되었으므로 이제 이를 적용할 차례입니다. cmdlet Start-DscConfiguration LCM을 호출하여 구성을 처리합니다. 대화형 모드로 실행하여 세부 정보를 확인할 수 있습니다.

Start-DscConfiguration -Path 'C:\CrearVariableEntorno' -Wait -Verbose

노드의 모습을 검사하려면 DSC가 보는 현재 상태를 확인하면 됩니다. Get-DscConfiguration 실제 적용된 값을 반환합니다. y Get-DscLocalConfigurationManager 현재 메타 구성을 보여줍니다.

# Estado efectivo del nodo
Get-DscConfiguration

# Metaconfiguración (LCM)
Get-DscLocalConfigurationManager

구성을 '고정 해제'해야 하는 경우에도 해결 방법이 있습니다. Remove-DscConfigurationDocument -Stage Current -Verbose 적용된 문서를 삭제합니다 노드는 다른 MOF를 수신할 준비가 됩니다.

관리되는 시나리오에서는 때때로 LCM 메타 구성을 적용하고 싶을 수 있습니다(예: 새로 고침 모드를 변경하거나 풀 서버를 대상으로 지정). 이는 메타 구성 MOF를 생성하고 이를 적용하여 수행됩니다. Set-DscLocalConfigurationManager -Path 'c:\metaconfig\localhost.meta.mof' -Verbose.

로컬 구성 관리자: 모드, 주파수 및 부분 구성

LCM은 구성이 언제, 어떻게 적용되는지 정의합니다. 다음과 같은 매개변수 ConfigurationMode (ApplyOnly, ApplyAndMonitor 또는 ApplyAndAutoCorrect) 및 주파수 RefreshFrequencyMins y ConfigurationModeFrequencyMins 노드가 한 번만 적용되는지, 모니터링하는지, 모니터링하고 자동으로 수정하는지 여부를 제어합니다.

  Windows에서 화면 새로 고침 빈도를 변경하는 방법: 전체 가이드

또한, 밀기나 당기기로 작업할 수 있습니다. 풀에서 노드는 MOF 및 모듈을 다운로드하기 위해 구성 서버(풀 서버)에 쿼리를 보냅니다. 식별자를 기반으로 합니다. 이 접근 방식은 버전과 규정 준수를 중앙에서 관리하기 때문에 대규모 환경에서 매우 유용합니다.

Windows Server 2016(DSC v2)부터 LCM은 부분 구성을 지원합니다. 이는 구성을 독립적인 조각으로 나누는 것을 의미합니다. LCM은 이를 결합합니다. 예를 들어, 한 보안 팀은 자신의 부분을 정의하고 다른 팀은 애플리케이션 부분을 정의하는데, 이는 서로의 발을 밟지 않는 방식입니다.

실제 사용 시나리오

DSC는 반복 가능하고 감사 가능한 '운영 표준'에 이상적입니다. 일반적인 응용 프로그램으로는 역할 및 기능 구성, 서비스 보안, IIS 준비, 패키지 설치, 레지스트리 수정, 환경 변수 정의 등이 있습니다.PowerShell을 사용하여 레지스트리를 조작하고 구성에 통합하는 방법에 대한 실용적인 가이드를 찾을 수 있습니다.

애플리케이션의 경우 설치, 종속성 구성, 사이트 게시 및 미세 조정을 자동화할 수 있습니다. 가장 좋은 점은 결과적으로 표시되는 내용이 일관적이라는 것입니다. 실험실이든 프로덕션 환경이든 모든 노드에 걸쳐 있습니다.

보안과 규정 준수 측면에서 DSC는 매우 적합합니다. 강화 정책, 방화벽 설정, 로컬 계정 또는 감사 정책 이는 수동 '요리책'이 아닌, 버전이 지정되고 감사 가능한 구성이 됩니다.

네트워크 관리(어댑터, IP, 규칙, 서비스)도 해당됩니다. 무언가가 변경되면 엔진이 이를 감지하고 모드에 따라 상태를 다시 적용합니다.예상치 못한 파생상품과 지원 시간을 줄여줍니다.

간단한 아이디어로, 중요한 서비스가 항상 실행되기를 원한다고 상상해 보세요. 리소스로 Service ApplyAndAutoCorrect 모드에서 누군가가 중지하면 LCM이 다시 선택합니다.일정에 따라 작업을 예약하여 확인을 강화할 수도 있습니다.

Azure 및 오케스트레이션과의 통합

DSC는 자동화 체인의 일부로 사용될 때 빛을 발합니다. Azure Automation은 프로비저닝(런북, 워크플로)을 조율하고 VM 구성을 DSC에 위임할 수 있습니다.Azure와 온프레미스 모두에서.

일반적인 패턴은 구성을 다음에 게시하는 것입니다. 저장 DSC 확장을 사용하여 VM과 연결합니다. 다음과 같은 명령 Publish-AzureVMDscConfiguration 짐을 싸다 스크립트 필요한 모듈이 포함된 .zip 파일, 그리고 Set-AzureVMDSCExtension 창조에 적용합니다.

# Publicar la configuración (convierte el .ps1 y módulos en .zip)
Publish-AzureVMDscConfiguration -ConfigurationPath './MiConfig.ps1' -Force

# Asignar la configuración a una VM al desplegarla
Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive 'MiConfig.zip' -ConfigurationName 'NombreDeConfig'

IaaS 배포에서는 아이디어가 간단합니다. 오케스트레이션은 클라우드 리소스(네트워크, 스토리지, VM)를 생성하고 연결하며 DSC는 각 VM 내에서 운영 체제와 애플리케이션을 구성합니다.구성의 버전을 관리하고 테스트하면 재현 가능한 환경을 확보할 수 있습니다.

크로스 플랫폼 DSC 설치 및 사용

최신 DSC는 이식 가능한 바이너리로 배포됩니다. PowerShell/DSC GitHub 저장소에서 최신 버전을 다운로드하고 압축을 푼 다음 폴더를 PATH에 추가하세요.복잡한 설치나 추가 종속성이 없습니다.

  데비안 및 우분투에서 손상된 패키지와 충족되지 않은 종속성 문제를 해결하는 방법

Windows에서는 WinGet을 통해 Microsoft Store에서 설치할 수도 있습니다. 먼저 패키지를 찾은 다음 안정 버전이나 미리보기 버전을 설치하세요.:

# Buscar los paquetes publicados
winget search DesiredStateConfiguration --source msstore

# Instalar la versión estable
winget install --id 9NVTPZWRC6KQ --source msstore

# Instalar la versión preliminar
winget install --id 9PCX3HX4HZ0Z --source msstore

이 DSC는 JSON 또는 YAML로 작성된 구성 문서와 JSON으로 작성된 스키마와 함께 작동합니다. CLI dsc 개별 리소스를 호출하고, 전체 문서를 적용하고, 모든 언어로 리소스를 작성할 수 있습니다.. 또한, 앞서 언급한 어댑터를 사용하면 기존 PSDSC 리소스를 활용할 수 있습니다.

JSON 스키마를 사용하여 문서 및 출력의 구조를 표준화함으로써, 다른 플랫폼 도구(WinGet, Dev Box, Azure Machine Configuration)와의 통합 이는 보다 직접적이어서 현대적인 파이프라인과 워크플로를 용이하게 합니다.

모범 사례 및 규정 준수

혼란을 피하려면 모듈화하는 것이 좋습니다. 구성을 재사용 가능한 구성 요소로 나누고 복잡한 부분에 대한 리소스 모듈을 만듭니다.이를 통해 마찰을 최소화하면서 유지 관리하고 확장할 수 있습니다.

모든 버전을 소스 제어(Git)에서 관리하세요. 저장소에 구성 및 리소스를 저장하면 팀워크, 기록 및 되돌리기가 용이해집니다.브랜치와 풀 리퀘스트를 사용하면 리뷰와 품질을 얻을 수 있습니다.

프로덕션에 배포하기 전에 테스트하세요. Pester와 같은 도구는 리소스와 구성을 검증하는 데 도움이 됩니다. 부작용을 피하기 위해서는 사전 생산 환경이 프로세스의 일부가 되어야 합니다.

많은 조직이 NIST SP 800-53(예: 기반 구성에 대한 CM-2 제어) 또는 FISMA와 같은 프레임워크를 따릅니다. DSC는 시스템을 정책과 표준에 맞춰 조정할 수 있는 일관성과 감사 기능을 제공합니다.수동 규정 준수 노력을 줄입니다.

기록 및 진단

뭔가 잘못된 것이 발견되면 이벤트 로그가 도움이 됩니다. Windows에서는 채널 Microsoft-Windows-Dsc/Operational 무슨 일이 일어났는지 중앙 집중화합니다 (리소스 구현, 수정 사항, 오류 등). 더 자세한 정보가 필요하면 추가 디버그 지향 로그를 활성화하세요.

Azure에서 DSC 확장 로그와 VM 진단도 검토합니다. 출력을 상관시키세요 Start-DscConfiguration -Verbose 이벤트 뷰어를 사용하면 시간을 절약할 수 있습니다. 실패한 정확한 리소스를 찾으려면.

DSC는 클래식 PowerShell이든 크로스 플랫폼이든 서버와 워크스테이션에서 IaC를 위한 견고한 기반을 제공합니다. 상태를 정의하고, 코드로 공유하고, 테스트한 다음, 엔진이 반복적인 작업을 수행하도록 합니다.; 그러면 귀하의 팀은 화재 진압이 아닌 실제 가치에 집중할 수 있습니다.

DSC(Desired State Configuration)-2는 무엇을 위한 것인가요?
관련 기사 :
DSC(Desired State Configuration)는 무엇에 사용되나요? 확정적 가이드, 사용법 및 예시