다음을 통해 공유


사용자 지정 컴퓨터 구성 패키지 아티팩트를 만드는 방법

시작하기 전에 컴퓨터 구성에 대한 개요 페이지를 읽는 것이 좋습니다.

컴퓨터 구성은 Windows와 Linux 모두를 감사하고 구성할 때 DSC(Desired State Configuration)를 사용합니다. DSC 구성은 컴퓨터가 충족해야 하는 조건을 정의합니다.

Important

환경의 상태를 감사하고 구성을 적용하는 사용자 지정 패키지는 GA(일반 공급) 지원 상태입니다. 그러나 다음 제한 사항이 적용됩니다.

구성을 적용하는 컴퓨터 구성 패키지를 사용하려면 Azure VM 게스트 구성 확장 버전 1.26.24 이상 또는 Arc 에이전트 1.10.0 이상이 필요합니다.

GuestConfiguration 모듈은 Ubuntu 18 이상에서만 사용할 수 있습니다. 그러나 모듈에서 생성된 패키지 및 정책은 Azure 또는 Arc에서 지원되는 모든 Linux 배포 및 버전에서 사용할 수 있습니다.

macOS에서 패키지를 테스트할 수 없습니다.

사용자 지정 콘텐츠 패키지에서 비밀 또는 기밀 정보를 사용하지 마세요.

다음 단계를 수행하여 Azure 또는 비 Azure 머신 상태를 관리하는 고유한 구성을 만듭니다.

PowerShell 7 및 필수 PowerShell 모듈 설치

먼저 컴퓨터 구성 작성 환경을 설정하는 방법의 단계를 수행합니다. 이러한 단계를 통해 OS, GuestConfiguration 모듈 및 PSDesiredStateConfiguration 모듈에 필요한 버전의 PowerShell을 설치할 수 있습니다.

구성 작성

구성 패키지를 만들기 전에 DSC 구성을 작성하고 컴파일합니다. 예제 구성은 Windows 및 Linux에서 사용할 수 있습니다.

Important

Windows용 구성을 컴파일하는 경우 PSDesiredStateConfiguration 버전 2.0.7(안정적인 릴리스)을 사용합니다. Linux용 구성을 컴파일할 때는 시험판 버전 3.0.0을 설치합니다.

이 예제 구성은 Windows 컴퓨터용입니다. ProcessMachine 범위에서 MC_ENV_EXAMPLE 환경 변수를 만들도록 컴퓨터를 구성합니다. 변수의 값은 'This was set by machine configuration'으로 설정합니다.

Configuration MyConfig {
    Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
    Environment MachineConfigurationExample {
        Name   = 'MC_ENV_EXAMPLE'
        Value  = 'This was set by machine configuration'
        Ensure = 'Present'
        Target = @('Process', 'Machine')
    }
}

MyConfig

해당 정의가 MyConfig.ps1 스크립트 파일에 저장되면 스크립트를 실행하여 구성을 컴파일할 수 있습니다.

. .\MyConfig.ps1
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:39 AM           1080 localhost.mof

구성은 현재 작업 디렉터리의 MyConfig 폴더에 있는 localhost.mof 파일로 컴파일됩니다. localhost.mof 이름을 패키지 이름으로 사용하려는 이름(예: MyConfig.mof)으로 바꿉니다.

Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:40 AM           1080 MyConfig.mof

참고 항목

이 예제에서는 Windows 컴퓨터에 대한 구성을 작성하고 컴파일하는 방법을 보여줍니다. Linux의 경우 PowerShell 클래스를 사용하여 사용자 지정 DSC 리소스 모듈을 만들어야 합니다. PowerShell 클래스를 사용하여 사용자 지정 DSC 리소스 작성 문서에는 컴퓨터 구성으로 테스트된 사용자 지정 리소스 및 구성의 전체 예제가 포함되어 있습니다.

이 문서의 나머지 내용은 플랫폼별 고려 사항을 언급하는 경우를 제외하고 Linux 및 Windows 머신에 대해 정의된 구성에 적용됩니다.

구성 패키지 아티팩트 만들기

MOF가 컴파일되면 지원 파일을 함께 패키지해야 합니다. 완료된 패키지는 컴퓨터 구성에서 Azure Policy 정의를 만드는 데 사용됩니다.

New-GuestConfigurationPackage cmdlet은 패키지를 만듭니다. 구성에 필요한 모듈은 모듈의 명령이 패키지에 추가할 수 있도록 개발 환경을 위한 $Env:PSModulePath에서 사용할 수 있어야 합니다.

Windows 콘텐츠를 만들 때 New-GuestConfigurationPackage cmdlet의 매개 변수:

  • 이름: 컴퓨터 구성 패키지 이름입니다.
  • 구성: 컴파일된 DSC 구성 문서의 전체 경로입니다.
  • 경로: 출력 폴더 경로입니다. 이 매개 변수는 선택 사항입니다. 지정하지 않으면 패키지가 현재 디렉터리에 만들어집니다.
  • 유형:(Audit, AuditandSet) 구성이 감사만 해야 하는지 또는 구성이 원하는 상태가 아닌 경우 컴퓨터의 상태를 변경해야 하는지 여부를 결정합니다. 기본값은 Audit입니다.

이 단계에서는 권한 상승이 필요하지 않습니다. 명령을 두 번 이상 실행하는 경우 Force 매개 변수를 사용하여 기존 패키지를 덮어씁니다.

다음 명령은 다음과 같은 패키지 아티팩트를 만듭니다.

# Create a package that will only audit compliance
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'Audit'
    Force         = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'AuditAndSet'
    Force         = $true
}
New-GuestConfigurationPackage @params

개체는 만든 패키지의 이름경로와 함께 반환됩니다.

Name     Path
----     ----
MyConfig C:\dsc\MyConfig.zip

컴퓨터 구성 아티팩트의 예상 내용

완료된 패키지는 컴퓨터 구성에서 Azure Policy 정의를 만드는 데 사용됩니다. 패키지는 다음으로 구성됩니다.

  • MOF로 컴파일된 DSC 구성
  • 모듈 폴더
    • GuestConfiguration 모듈
    • DscNativeResources 모듈
    • MOF에 필요한 DSC 리소스 모듈
  • 패키지 typeversion을 저장하는 메타 구성 파일

PowerShell cmdlet은 패키지 .zip 파일을 만듭니다. 루트 수준 폴더 또는 버전 폴더는 필요하지 않습니다. 패키지 형식은 .zip 파일이어야 하며, 압축을 풀었을 때 총 크기가 100MB를 초과할 수 없습니다.

Expand-Archive cmdlet을 사용해 보관 계층을 확장하여 검사할 수 있습니다.

Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip

PowerShell을 사용하여 압축되지 않은 패키지의 총 크기를 가져올 수 있습니다.

Get-ChildItem -Recurse -Path .\MyConfigZip |
    Measure-Object -Sum Length |
    ForEach-Object -Process {
        $Size = [math]::Round(($_.Sum / 1MB), 2)
        "$Size MB"
    }

타사 도구로 컴퓨터 구성 확장

컴퓨터 구성을 위한 아티팩트 패키지는 타사 도구를 포함하도록 확장할 수 있습니다. 컴퓨터 구성을 확장하려면 두 가지 구성 요소를 개발해야 합니다.

  • 타사 도구 관리와 관련된 모든 작업을 처리하는 Desired State Configuration 리소스
    • 설치
    • Invoke
    • 출력 변환
  • 도구에서 기본적으로 사용하는 올바른 형식의 콘텐츠

커뮤니티 솔루션이 아직 없는 경우 DSC 리소스에 사용자 지정 개발이 필요합니다. 커뮤니티 솔루션은 PowerShell 갤러리에서 GuestConfiguration 태그를 검색하여 찾을 수 있습니다.

참고 항목

컴퓨터 구성 확장성은 "사용자 라이선스 필요" 시나리오입니다. 사용하기 전에 타사 도구의 사용 약관을 충족하는지 확인합니다.

DSC 리소스를 개발 환경에 설치한 후에는 New-GuestConfigurationPackage에 대한 FilesToInclude 매개 변수를 사용하여 콘텐츠 아티팩트의 타사 플랫폼에 대한 콘텐츠를 포함합니다.

다음 단계