다음을 통해 공유


구성 작성, 컴파일 및 적용

적용 대상: Windows PowerShell 4.0, Windows PowerShell 5.0

이 연습에서는 DSC(Desired State Configuration) 구성을 처음부터 끝까지 만들고 적용하는 과정을 안내합니다. 다음 예제에서는 매우 간단한 구성을 작성하고 적용하는 방법을 배웁니다. 구성은 로컬 컴퓨터에 "HelloWorld.txt" 파일이 있는지 확인합니다. 파일을 삭제하면 DSC는 다음에 업데이트할 때 파일을 다시 만듭니다.

DSC의 정의 및 작동 방식에 대한 개요는 개발자를 위한 원하는 상태 구성 개요를 참조하세요.

요구 사항

이 예제를 실행하려면 PowerShell 4.0 이상을 실행하는 컴퓨터가 필요합니다.

구성 작성

DSC 구성 은 하나 이상의 대상 컴퓨터(노드)를 구성하는 방법을 정의하는 특수 PowerShell 함수입니다.

PowerShell ISE 또는 기타 PowerShell 편집기에서 다음을 입력합니다.

Configuration HelloWorld {

    # Import the module that contains the File resource.
    Import-DscResource -ModuleName PsDesiredStateConfiguration

    # The Node statement specifies which targets to compile MOF files for, when
    # this configuration is executed.
    Node 'localhost' {

        # The File resource can ensure the state of files, or copy them from a
        # source to a destination with persistent updates.
        File HelloWorld {
            DestinationPath = "C:\Temp\HelloWorld.txt"
            Ensure = "Present"
            Contents   = "Hello World from DSC!"
        }
    }
}

중요합니다

동일한 구성에서 많은 DSC 리소스로 작업할 수 있도록 여러 모듈을 가져와야 하는 고급 시나리오에서는 를 사용하여 Import-DscResource각 모듈을 별도의 줄에 배치해야 합니다. 이는 소스 제어에서 유지 관리하기가 더 쉽고 Azure State Configuration에서 DSC로 작업할 때 필요합니다.

 Configuration HelloWorld {

  # Import the module that contains the File resource.
  Import-DscResource -ModuleName PsDesiredStateConfiguration
  Import-DscResource -ModuleName xWebAdministration

파일을 "HelloWorld.ps1"로 저장합니다.

구성을 정의하는 것은 함수를 정의하는 것과 같습니다. Node 블록은 구성할 대상 노드(이 경우 localhost)를 지정합니다.

구성은 하나의 리소스인 리소스를 호출합니다 File . 리소스는 대상 노드가 구성에 의해 정의된 상태인지 확인하는 작업을 수행합니다.

구성 컴파일

DSC 구성을 노드에 적용하려면 먼저 MOF 파일로 컴파일해야 합니다. 함수와 마찬가지로 구성을 실행하면 블록에 Node 의해 정의된 모든 노드에 대해 하나의 .mof 파일이 컴파일됩니다. 구성을 실행하려면 스크립트를 HelloWorld.ps1 현재 범위로 도트 소스화해야 합니다. 자세한 내용은 about_Scripts를 참조하십시오.

(점, 공백) 뒤 . 에 저장한 경로를 입력하여 스크립트를 HelloWorld.ps1도트 소스로 지정합니다. 그런 다음 함수처럼 호출하여 구성을 실행할 수 있습니다. 스크립트 하단에서 구성 함수를 호출하여 dot-source가 필요하지 않도록 할 수도 있습니다.

. C:\Scripts\HelloWorld.ps1
HelloWorld

그러면 다음과 같은 출력이 생성됩니다.

Directory: C:\Scripts\HelloWorld


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/13/2017   5:20 PM           2746 localhost.mof

구성 적용

이제 컴파일된 MOF가 있으므로 Start-DscConfiguration cmdlet을 호출하여 대상 노드(이 경우 로컬 컴퓨터)에 구성을 적용할 수 있습니다.

cmdlet은 Start-DscConfiguration DSC의 엔진인 LCM(로컬 구성 관리자)에 구성을 적용하도록 지시합니다. LCM은 구성을 적용하기 위해 DSC 리소스를 호출하는 작업을 수행합니다.

아래 코드를 사용하여 cmdlet을 실행합니다 Start-DSCConfiguration . Path 매개 변수에 대한 u localhost.mof 가 저장되는 디렉터리 경로를 지정합니다. cmdlet은 Start-DSCConfiguration 모든 <computername>.mof 파일에 대해 지정된 디렉터리를 찾습니다. cmdlet은 Start-DSCConfiguration 찾은 각 .mof 파일을 파일 이름("localhost", "server01", "dc-02" 등)으로 computername 지정된 파일에 적용하려고 시도합니다.

비고

매개 변수를 -Wait 지정하지 않으면 작업을 Start-DSCConfiguration 수행할 백그라운드 작업을 만듭니다. 매개 변수를 -Verbose 지정하면 작업의 자세한 정보 표시 출력을 볼 수 있습니다. -Wait이며 -Verbose 둘 다 선택적 매개 변수입니다.

Start-DscConfiguration -Path C:\Scripts\HelloWorld -Verbose -Wait

구성 테스트

cmdlet이 Start-DSCConfiguration 완료되면 지정한 위치에 파일이 표시됩니다 HelloWorld.txt . Get-Content cmdlet을 사용하여 콘텐츠를 확인할 수 있습니다.

Test-DSCConfiguration을 사용하여 현재 상태를 테스트할 수도 있습니다.

출력은 노드가 현재 적용된 구성을 준수하는 경우여야 True 합니다.

Test-DSCConfiguration
True
Get-Content -Path C:\Temp\HelloWorld.txt
Hello World from DSC!

구성 다시 적용

구성이 다시 적용되는 것을 보려면 구성에서 만든 텍스트 파일을 제거할 수 있습니다. 매개 변수와 함께 -UseExisting cmdlet을 Start-DSCConfiguration 사용합니다. 매개 변수는 -UseExistingStart-DSCConfiguration 가장 최근에 성공적으로 적용된 구성을 나타내는 "current.mof" 파일을 다시 적용하도록 지시합니다.

Remove-Item -Path C:\Temp\HelloWorld.txt

다음 단계

  • DSC 구성에 대한 자세한 내용은 DSC 구성에서 확인할 수 있습니다.
  • DSC 리소스에서 사용할 수 있는 DSC 리소스와 사용자 지정 DSC 리소스를 만드는 방법을 확인합니다.
  • PowerShell 갤러리에서 DSC 구성 및 리소스를 찾습니다.