Azure Desired State Configuration 확장 처리기 소개

Azure VM(가상 머신)용 Azure VM 확장 및 연결된 확장은 Microsoft Azure 인프라 서비스의 일부입니다. Azure VM 확장 기능은 VM 기능을 확장하고 다양한 VM 관리 작업을 단순화하는 소프트웨어 구성 요소입니다.

Windows Powershell용 Azure DSC(Desired State Configuration) 확장의 주요 사용 사례는 VM을 Azure Automation DSC(State Configuration) 서비스로 부트스트랩하는 것입니다. 이 서비스는 VM 구성의 지속적인 관리와 Azure Monitoring과 같은 다른 운영 도구와의 통합을 비롯한 이점을 제공합니다. 확장을 사용하여 서비스에 VM을 등록하고 Azure 구독에서 작동하는 유연한 솔루션을 얻을 수 있습니다.

Automation DSC 서비스와 독립적으로 DSC 확장을 실행할 수 있지만 이 메서드는 구성만 VM에 푸시합니다. VM에서 로컬이 아닌 진행 중인 보고를 사용할 수 없습니다. DSC 확장을 사용하도록 설정하기 전에 사용 가능한 DSC 버전을 검토하고 구성 요구 사항을 지원하는 버전을 선택합니다.

이 문서에서는 Automation 온보딩을 위해 DSC 확장을 사용하거나 도구로 사용하여 Azure SDK를 사용하여 VM에 구성을 할당하는 방법을 설명합니다.

사용 가능한 DSC 버전

여러 버전의 Desired State Configuration 구현에 사용할 수 있습니다. DSC 확장을 사용하도록 설정하기 전에 구성 및 비즈니스 목표를 가장 잘 지원하는 DSC 버전을 선택합니다.

버전 가용성 설명
2.0 일반 공개 Desired State Configuration 2.0은 Azure Automanage 컴퓨터 구성 기능과 함께 사용할 수 있습니다. 머신 구성 기능은 DSC 확장 처리기, Azure Automation State Configuration 및 고객 피드백에서 가장 일반적으로 요청되는 기능을 결합합니다. 머신 구성에는 Arc 지원 서버를 통한 하이브리드 컴퓨터 지원도 포함됩니다.
1.1 일반 공개 구현에서 Azure Automanage 컴퓨터 구성 기능을 사용하지 않는 경우 Desired State Configuration 1.1을 선택해야 합니다. 자세한 내용은 PSDesiredStateConfiguration v1.1을 참조하세요.
3.0 공개 프리뷰 Desired State Configuration 3.0은 퍼블릭 베타로 제공됩니다. 이 버전은 Azure 컴퓨터 구성 또는 비프로덕션 환경에서만 Desired State Configuration 1.1에서 마이그레이션을 테스트하는 데 사용해야 합니다.

필수 조건

  • 로컬 컴퓨터: Azure DSC 확장과 상호 작용하려면 로컬 머신에서 Azure Portal 또는 Azure PowerShell SDK를 사용해야 합니다.

  • 게스트 에이전트: DSC 구성을 통해 준비된 Azure VM은 WMF(Windows Management Framework) 4.0 이상을 지원하는 OS여야 합니다. 지원되는 OS 버전의 전체 목록은 Azure DSC 확장 버전 기록을 참조하세요.

용어 및 개념

이 가이드에서는 다음과 같은 개념에 익숙하다고 가정합니다.

  • 구성: DSC 구성 문서입니다.

  • 노드: DSC 구성에 대한 대상입니다. 이 아티클에서 노드는 항상 Azure VM을 나타냅니다.

  • 구성 데이터는 구성에 대한 환경 데이터가 있는 PowerShell DSC 형식 파일(.psd1)에 저장됩니다.

아키텍처

Azure DSC 확장은 Azure VM 확장 프레임워크를 사용하여 Azure VM에서 실행되는 DSC 구성을 제공하고 적용하며 보고합니다. DSC 확장은 구성 문서 및 매개 변수 집합을 허용합니다. 파일을 제공하지 않으면 확장에 기본 구성 스크립트가 포함됩니다. 기본 구성 스크립트는 로컬 구성 관리자에서 메타데이터를 설정하는 데만 사용됩니다.

확장이 처음으로 호출되면 다음 논리를 사용하여 WMF의 버전을 설치합니다.

  • Azure VM OS가 Windows Server 2016이면 아무 작업도 수행되지 않습니다. Windows Server 2016에는 이미 최신 버전의 PowerShell이 설치되어 있습니다.

  • wmfVersion 속성이 지정된 경우 지정된 버전이 VM의 운영 체제와 호환되지 않는 한 지정된 버전의 WMF가 설치됩니다.

  • wmfVersion 속성을 지정하면 WMF의 적용 가능한 최신 버전이 설치됩니다.

WMF 설치 프로세스를 다시 시작해야 합니다. 다시 시작한 후에 확장은 modulesUrl 속성(제공된 경우)에 지정된 .zip 파일을 다운로드합니다. 이 위치가 Azure Blob Storage인 경우 sasToken 속성에 SAS 토큰을 지정하여 파일에 액세스할 수 있습니다. .zip 다운로드하고 압축을 풀면 configurationFunction에 정의된 구성 함수가 실행되어 MOF(Managed Object Format) 파일(.mof)을 생성합니다. 그런 다음, 확장은 생성된 .mof 파일을 사용하여 Start-DscConfiguration -Force를 실행합니다. 확장은 출력을 캡처하고 Azure 상태 채널에 작성합니다.

기본 구성 스크립트

Azure DSC 확장에는 Azure Automation State Configuration 서비스에 VM을 온보딩할 때 사용할 수 있도록 기본 구성 스크립트가 포함되어 있습니다. 스크립트 매개 변수는 로컬 구성 관리자의 구성 가능한 속성과 정렬됩니다. 스크립트 매개 변수에 대해서는 Desired State Configuration 확장과 Azure Resource Manager(ARM) 템플릿에서 기본 구성 스크립트를 참조하세요. 전체 스크립트에 대해서는 GitHub의 Azure 빠른 시작 템플릿을 참조하세요.

Azure Automation State Configuration 등록

Azure DSC 확장을 사용하여 Azure Automation State Configuration 서비스에 노드를 등록하는 경우 다음 값을 제공합니다.

  • RegistrationUrl: Azure Automation 계정의 https 주소
  • RegistrationKey: 서비스에 노드를 등록하는 데 사용되는 공유 암호
  • NodeConfigurationName: 서버 역할을 구성하기 위해 서비스에서 가져올 노드 구성(MOF)의 이름 값은 구성 이름이 아니라 노드 구성의 이름입니다.

Azure Portal에서 이러한 값을 수집하거나 Windows PowerShell에서 다음 명령을 실행할 수 있습니다.

(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).Endpoint
(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).PrimaryKey

노드 구성 이름

NodeConfigurationName 매개 변수의 경우 구성이 아닌 노드 구성의 이름을 제공해야 합니다.

구성은 노드 구성(MOF 파일)을 컴파일하는 데 사용되는 스크립트에 정의됩니다. 노드 구성의 이름은 항상 구성의 이름 뒤에 마침표 .localhost 또는 특정 컴퓨터 이름이 붙습니다.

Warning

노드 구성이 Azure Automation State Configuration에 있는지 확인합니다. 이 값이 없으면 확장 배포에서 오류를 반환합니다.

ARM 템플릿 배포

DSC 확장을 배포하는 가장 일반적인 방법은 Azure Resource Manager 템플릿을 사용하는 것입니다. ARM 배포 템플릿에 DSC 확장을 포함하는 방법에 대한 자세한 내용 및 예제는 Desired State Configuration 확장과 ARM 템플릿을 참조하세요.

PowerShell cmdlet 배포

DSC 확장 관리용 PowerShell cmdlet은 대화형 문제 해결 및 정보 수집 시나리오에 가장 적합합니다. cmdlet을 사용하여 DSC 확장 배포를 패키징하고 게시하며 모니터링할 수 있습니다. DSC 확장용 cmdlet은 기본 구성 스크립트에서 사용할 수 있도록 아직 업데이트되지 않았습니다.

다음은 사용 가능한 몇 가지 PowerShell cmdlet입니다.

  • Publish-AzVMDscConfiguration cmdlet은 구성 파일을 가져와, 종속 DSC 리소스를 검색한 다음, .zip 파일을 만듭니다. .zip 파일에는 구성과, 구성을 실행하는 데 필요한 DSC 리소스가 포함됩니다. 또는 -OutputArchivePath 매개 변수를 사용하여 패키지를 로컬로 만들 수도 있습니다. 그렇지 않으면 이 cmdlet은 Blob Storage에 .zip 파일을 게시하고 이 파일을 SAS 토큰으로 보호합니다.

    이 cmdlet에서 만든 Powershell 구성 스크립트(.ps1)는 보관 폴더 루트의 .zip 파일에 있습니다. 모듈 폴더는 리소스의 보관 폴더에 있습니다.

  • Set-AzVMDscExtension cmdlet은 PowerShell DSC 확장에 필요한 설정을 VM 구성 개체에 삽입합니다.

  • Get-AzVMDscExtension cmdlet은 특정 VM의 DSC 확장 상태를 가져옵니다.

  • Get-AzVMDscExtensionStatus cmdlet은 DSC 확장 처리기에 의해 실행되는 DSC 구성의 상태를 가져옵니다. 이 작업을 단일 VM 또는 VM 그룹에 대해 수행할 수 있습니다.

  • Remove-AzVMDscExtension cmdlet은 특정 VM에서 확장 처리기를 제거합니다. 이 cmdlet은 구성을 제거하거나 WMF를 제거하거나 VM에 적용된 설정을 변경하지 않습니다. cmdlet은 확장 처리기만 제거합니다.

중요 사항

Azure Resource Manager cmdlet으로 작업할 때 유의해야 할 몇 가지 고려 사항이 있습니다.

  • Azure Resource Manager cmdlets는 동기입니다.

  • ResourceGroupName, VMName, ArchiveStorageAccountName, Version, Location 등 여러 매개 변수가 필요합니다.

  • ArchiveResourceGroupName 는 선택적 매개 변수입니다. 스토리지 계정이 VM을 만들 위치가 아닌 다른 리소스 그룹에 속해 있는 경우 이 매개 변수를 지정할 수 있습니다.

  • AutoUpdate 스위치를 사용하면 최신 버전이 제공될 시 확장 처리기를 자동으로 업데이트할 수 있습니다. 이 매개 변수를 사용하면 새 버전의 WMF가 릴리스될 때 VM이 다시 시작될 수 있습니다.

PowerShell cmdlet을 사용한 구성

Azure DSC 확장은 DSC 구성 문서를 사용하여 배포하는 동안 Azure VM을 직접 구성할 수 있습니다. 이 단계에서는 노드가 Automation에 등록되지 않습니다. 노드는 중앙에서 관리되지 않습니다.

다음 코드에서는 간단한 예를 보여 줍니다. 이 예제를 사용하려면 이 구성을 로컬로 iisInstall.ps1 스크립트 파일로 저장합니다.

configuration IISInstall
{
    node "localhost"
    {
        WindowsFeature IIS
        {
            Ensure = "Present"
            Name = "Web-Server"
        }
    }
}

다음 PowerShell 명령을 실행하면 지정된 VM에 iisInstall.ps1 스크립트가 배치됩니다. 또한 이 명령은 구성을 실행한 후 상태를 다시 보고합니다.

$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.76' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'

Azure CLI 배포

Azure CLI를 사용하여 DSC 확장을 기존 VM에 배포할 수 있습니다. 다음 예제에서는 Windows에서 VM을 배포하는 방법을 보여 줍니다.

Windows를 실행하는 VM의 경우 다음 명령을 사용합니다.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSC \
  --publisher Microsoft.Powershell \
  --version 2.77 --protected-settings '{}' \
  --settings '{}'

Azure Portal 배포

Azure Portal에서 DSC 확장을 설정하려면 다음 단계를 수행합니다.

  1. VM으로 이동합니다.

  2. 설정에서 확장 + 애플리케이션을 선택합니다.

  3. 확장에서 + 추가를 선택합니다.

  4. PowerShell Desired State Configuration을 선택한 다음, 다음을 선택합니다.

  5. DSC 확장에 대해 다음 매개 변수를 구성합니다.

    참고 항목

    기본 구성 스크립트로 작업하는 경우 다음 매개 변수의 대부분은 스크립트를 통하지 않고 Azure Portal에서 직접 정의해야 합니다.

    • 구성 모듈 또는 스크립트: (필수) VM에 대한 구성 모듈 또는 스크립트 파일을 제공합니다.

      구성 모듈 및 스크립트에는 구성 스크립트가 있는 .ps1 파일 또는 루트에 .ps1 구성 스크립트가 있는 .zip 파일이 필요합니다. .zip 파일을 사용하는 경우 모든 종속 리소스를 .zip 파일의 모듈 폴더에 포함해야 합니다. Azure PowerShell SDK에 포함된 Publish-AzureVMDscConfiguration -OutputArchivePath cmdlet을 사용하여 .zip 파일을 만들 수 있습니다. .zip 파일은 사용자 Blob Storage로 업로드되고 SAS 토큰에 의해 보호됩니다.

    • 모듈 정규화된 구성 이름: (필수) 단일 .ps1 스크립트 파일에 여러 구성 함수를 포함하도록 이 설정을 지정합니다. 이 설정에서는 /\에 이어서 구성 .ps1 스크립트의 이름 및 구성 함수의 이름을 입력합니다. 예를 들어 .ps1 스크립트 파일에 configuration.ps1 이름이 있고 구성 이름이 IisInstall인 경우 설정에 configuration.ps1\IisInstall 값을 입력합니다.

    • 구성 인수: 구성 함수가 인수를 사용하는 경우 argumentName1=value1,argumentName2=value2 형식으로 값을 입력합니다. 이 형식은 PowerShell cmdlet 또는 ARM 템플릿에서 구성 인수를 지정하는 데 사용되는 형식과 다릅니다.

      참고 항목

      구성 인수는 기본 구성 스크립트에서 정의할 수 있습니다.

    • 구성 데이터 PSD1 파일: 구성에 .psd1 형식 구성 데이터 파일이 필요한 경우 이 설정을 사용하여 데이터 파일을 선택하고 사용자 Blob Storage에 업로드합니다. 구성 데이터 파일은 Blob Storage의 SAS 토큰에 의해 보호됩니다.

    • WMF 버전: VM에 설치해야 하는 WMF의 버전을 지정합니다. 기본값인 최신을 선택하면 시스템에서 최신 버전의 WMF를 설치합니다. 다른 가능한 값으로는 4.0, 5.0 및 5.1이 있습니다. 가능한 값은 업데이트에 따라 달라집니다.

    • 데이터 수집: DSC 확장이 VM에 대한 원격 분석을 수집하도록 하려면 이 설정을 사용하도록 설정합니다. 자세한 내용은 Azure DSC 확장 데이터 컬렉션을 참조하세요.

    • 버전: (필수) 설치할 DSC 확장의 버전을 지정합니다. 버전에 대한 정보는 Azure DSC 확장 버전 기록을 참조하세요.

    • 부 버전 자동 업그레이드: 이 설정은 cmdlet의 AutoUpdate 스위치에 매핑됩니다. 설치하는 동안 DSC 확장이 최신 버전으로 자동으로 업데이트되도록 하려면 이 설정을 구성합니다. 는 DSC 확장 처리기에 사용 가능한 최신 버전을 사용하도록 지시합니다. 아니요(기본값)는 버전 설정에서 지정한 버전을 강제로 설치합니다.

  6. 매개 변수를 구성한 후 검토 + 만들기를 선택한 다음 만들기를 선택합니다.

DSC 확장 로그

C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number> 아래의 VM에서 Azure DSC 확장에 대한 로그를 볼 수 있습니다.

다음 단계