Azure 필요한 상태 구성 확장 처리기 소개Introduction to the Azure Desired State Configuration extension handler

Azure VM 에이전트 및 연결된 확장은 Microsoft Azure 인프라 서비스의 일부입니다.The Azure VM Agent and associated extensions are part of Microsoft Azure infrastructure services. VM 확장 기능은 VM 기능을 확장하고 다양한 VM 관리 작업을 단순화하는 소프트웨어 구성 요소입니다.VM extensions are software components that extend VM functionality and simplify various VM management operations.

Azure DSC(Desired State Configuration) 확장의 주요 사용 사례는 VM을 Azure Automation DSC(State Configuration) 서비스로 부트스트랩하는 것입니다.The primary use case for the Azure Desired State Configuration (DSC) extension is to bootstrap a VM to the Azure Automation State Configuration (DSC) service. 이 서비스는 VM 구성의 지속적인 관리와 Azure Monitoring과 같은 다른 운영 도구와의 통합을 비롯한 이점을 제공합니다.The service provides benefits that include ongoing management of the VM configuration and integration with other operational tools, such as Azure Monitoring. 확장을 사용하여 VM을 서비스에 등록하면 Azure 구독에서 작동하는 유연한 솔루션을 제공합니다.Using the extension to register VM's to the service provides a flexible solution that even works across Azure subscriptions.

DSC 확장은 Automation DSC 서비스와 별도로 사용할 수 있습니다.You can use the DSC extension independently of the Automation DSC service. 그러나 이렇게 하면 구성이 VM에만 푸시됩니다.However, this will only push a configuration to the VM. VM에서 로컬이 아닌 진행 중인 보고를 사용할 수 없습니다.No ongoing reporting is available, other than locally in the VM.

이 문서에서는 두 가지 시나리오, 즉 Automation 온보딩을 위해 DSC 확장을 사용하는 경우와 Azure SDK를 사용하여 VM에 구성을 할당하기 위한 도구로 DSC 확장을 사용하는 경우에 대한 정보를 제공합니다.This article provides information about both scenarios: using the DSC extension for Automation onboarding, and using the DSC extension as a tool for assigning configurations to VMs by using the Azure SDK.

필수 구성 요소Prerequisites

  • 로컬 컴퓨터: Azure VM 확장과 상호 작용하려면 Azure Portal 또는 Azure PowerShell SDK를 사용해야 합니다.Local machine: To interact with the Azure VM extension, you must use either the Azure portal or the Azure PowerShell SDK.
  • 게스트 에이전트: DSC 구성을 통해 구성된 Azure VM은 WMF(Windows Management Framework) 4.0 이상을 지원하는 OS여야 합니다.Guest Agent: The Azure VM that's configured by the DSC configuration must be an OS that supports Windows Management Framework (WMF) 4.0 or later. 지원되는 OS 버전의 전체 목록은 DSC 확장 버전 기록을 참조하세요.For the full list of supported OS versions, see the DSC extension version history.

용어 및 개념Terms and concepts

이 가이드에서는 다음과 같은 개념에 익숙하다고 가정합니다.This guide assumes familiarity with the following concepts:

  • 구성: DSC 구성 문서입니다.Configuration: A DSC configuration document.
  • 노드: DSC 구성에 대한 대상입니다.Node: A target for a DSC configuration. 이 문서에서 노드 는 항상 Azure VM을 나타냅니다.In this document, node always refers to an Azure VM.
  • 구성 데이터: 구성에 대한 환경 데이터를 포함하는 .psd1 파일입니다.Configuration data: A .psd1 file that has environmental data for a configuration.

ArchitectureArchitecture

Azure DSC 확장은 Azure VM 에이전트 프레임워크를 사용하여 Azure VM에서 실행되는 DSC 구성을 제공하고 적용하며 보고합니다.The Azure DSC extension uses the Azure VM Agent framework to deliver, enact, and report on DSC configurations running on Azure VMs. DSC 확장은 구성 문서 및 매개 변수 집합을 허용합니다.The DSC extension accepts a configuration document and a set of parameters. 파일을 제공하지 않으면 확장에 기본 구성 스크립트가 포함됩니다.If no file is provided, a default configuration script is embedded with the extension. 기본 구성 스크립트는 로컬 구성 관리자에서 메타데이터를 설정하는 데만 사용됩니다.The default configuration script is used only to set metadata in Local Configuration Manager.

확장이 처음으로 호출되면 다음 논리를 사용하여 WMF의 버전을 설치합니다.When the extension is called for the first time, it installs a version of WMF by using the following logic:

  • Azure VM OS가 Windows Server 2016이면 아무 작업도 수행되지 않습니다.If the Azure VM OS is Windows Server 2016, no action is taken. Windows Server 2016에는 이미 최신 버전의 PowerShell이 설치되어 있습니다.Windows Server 2016 already has the latest version of PowerShell installed.
  • wmfVersion 속성을 지정한 경우 VM의 OS와 호환되지 않을 경우를 제외하고 해당 버전의 WMF가 설치됩니다.If the wmfVersion property is specified, that version of WMF is installed, unless that version is incompatible with the VM's OS.
  • wmfVersion 속성을 지정하지 않은 경우 WMF의 적용 가능한 최신 버전이 설치됩니다.If no wmfVersion property is specified, the latest applicable version of WMF is installed.

WMF를 설치하려면 컴퓨터를 다시 시작해야 합니다.Installing WMF requires a restart. 다시 시작한 후에 확장은 modulesUrl 속성(제공된 경우)에 지정된 .zip 파일을 다운로드합니다.After restarting, the extension downloads the .zip file that's specified in the modulesUrl property, if provided. 이 위치가 Azure Blob Storage인 경우 sasToken 속성에 SAS 토큰을 지정하여 파일에 액세스할 수 있습니다.If this location is in Azure Blob storage, you can specify an SAS token in the sasToken property to access the file. .zip을 다운로드하고 압축을 푼 후에 configurationFunction 에 정의된 구성 함수를 실행하여 .mof(MOF(Managed Object Format)) 파일을 생성합니다.After the .zip is downloaded and unpacked, the configuration function defined in configurationFunction runs to generate an .mof(Managed Object Format) file. 그런 다음, 확장은 생성된 .mof 파일을 사용하여 Start-DscConfiguration -Force를 실행합니다.The extension then runs Start-DscConfiguration -Force by using the generated .mof file. 확장은 출력을 캡처하고 Azure 상태 채널에 작성합니다.The extension captures output and writes it to the Azure status channel.

기본 구성 스크립트Default configuration script

Azure DSC 확장에는 Azure Automation DSC 서비스에 VM을 온보딩할 때 사용할 수 있도록 기본 구성 스크립트가 포함되어 있습니다.The Azure DSC extension includes a default configuration script that's intended to be used when you onboard a VM to the Azure Automation DSC service. 스크립트 매개 변수는 로컬 구성 관리자의 구성 가능한 속성과 정렬됩니다.The script parameters are aligned with the configurable properties of Local Configuration Manager. 스크립트 매개 변수에 대해서는 Desired State Configuration 확장과 Azure Resource Manager 템플릿에서 기본 구성 스크립트를 참조하세요.For script parameters, see Default configuration script in Desired State Configuration extension with Azure Resource Manager templates. 전체 스크립트에 대해서는 GitHub의 Azure 빠른 시작 템플릿을 참조하세요.For the full script, see the Azure quickstart template in GitHub.

Azure Automation DSC(State Configuration) 서비스에 등록하는 방법에 대한 정보Information for registering with Azure Automation State Configuration (DSC) service

DSC 확장을 사용하여 노드를 State Configuration 서비스에 등록하는 경우 세 가지 값을 제공해야 합니다.When using the DSC Extension to register a node with the State Configuration service, three values will need to be provided.

  • RegistrationUrl - Azure Automation 계정의 https 주소RegistrationUrl - the https address of the Azure Automation account
  • RegistrationKey - 서비스에 노드를 등록하는 데 사용되는 공유 암호RegistrationKey - a shared secret used to register nodes with the service
  • NodeConfigurationName - 서버 역할을 구성하기 위해 서비스에서 가져올 노드 구성(MOF)의 이름NodeConfigurationName - the name of the Node Configuration (MOF) to pull from the service to configure the server role

이 정보는 Azure Portal에서 보거나 PowerShell을 사용할 수 있습니다.This information can be seen in the Azure portal or you can use PowerShell.

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

노드 구성 이름에 대해 노드 구성이 Azure State Configuration에 있는지 확인합니다.For the Node Configuration name, make sure the node configuration exists in Azure State Configuration. 없는 경우 확장 배포는 오류를 반환합니다.If it does not, the extension deployment will return a failure. 또한 구성이 아니라 ‘노드 구성’의 이름을 사용하고 있는지도 확인합니다.Also make sure you are using the name of the Node Configuration and not the Configuration. 구성은 노드 구성(MOF 파일)을 컴파일하는 데 사용되는 스크립트에 정의됩니다.A Configuration is defined in a script that is used to compile the Node Configuration (MOF file). 이름은 항상 구성 뒤에 마침표(.)와 localhost 또는 특정 컴퓨터 이름이 옵니다.The name will always be the Configuration followed by a period . and either localhost or a specific computer name.

Resource Manager 템플릿의 DSC 확장DSC extension in Resource Manager templates

대부분의 시나리오에서 ARM(Azure Resource Manager) 배포 템플릿은 DSC 확장을 사용하기 위한 예상되는 방법입니다.In most scenarios, Resource Manager deployment templates are the expected way to work with the DSC extension. Azure Resource Manager 배포 템플릿에 DSC 확장을 포함하는 방법에 대한 자세한 내용 및 예제는 Desired State Configuration 확장과 Azure Resource Manager 템플릿을 참조하세요.For more information and for examples of how to include the DSC extension in Resource Manager deployment templates, see Desired State Configuration extension with Azure Resource Manager templates.

DSC 확장 PowerShell CmdletDSC extension PowerShell cmdlets

DSC 확장 관리에 사용되는 PowerShell cmdlet은 대화형 문제 해결 및 정보 수집 시나리오에 가장 적합합니다.The PowerShell cmdlets that are used to manage the DSC extension are best used in interactive troubleshooting and information-gathering scenarios. cmdlet을 사용하여 DSC 확장 배포를 패키징하고 게시하며 모니터링할 수 있습니다.You can use the cmdlets to package, publish, and monitor DSC extension deployments. DSC 확장용 cmdlet은 기본 구성 스크립트에서 사용할 수 있도록 아직 업데이트되지 않았습니다.Cmdlets for the DSC extension aren't yet updated to work with the default configuration script.

Publish-AzVMDscConfiguration cmdlet은 구성 파일을 가져와, 종속 DSC 리소스를 검색한 다음, .zip 파일을 만듭니다.The Publish-AzVMDscConfiguration cmdlet takes in a configuration file, scans it for dependent DSC resources, and then creates a .zip file. .zip 파일에는 구성과, 구성을 실행하는 데 필요한 DSC 리소스가 포함됩니다.The .zip file contains the configuration and DSC resources that are needed to enact the configuration. 또한 이 cmdlet에서는 -OutputArchivePath 매개 변수를 사용하여 로컬로 패키지를 만들 수도 있습니다.The cmdlet can also create the package locally by using the -OutputArchivePath parameter. 그렇지 않으면 이 cmdlet은 Blob Storage에 .zip 파일을 게시하고 이 파일을 SAS 토큰으로 보호합니다.Otherwise, the cmdlet publishes the .zip file to blob storage, and then secures it with an SAS token.

이 cmdlet에서 만든 .ps1 구성 스크립트는 보관 폴더 루트의 .zip 파일에 있습니다.The .ps1 configuration script that the cmdlet creates is in the .zip file at the root of the archive folder. 모듈 폴더는 리소스의 보관 폴더에 있습니다.The module folder is placed in the archive folder in resources.

Set-AzVMDscExtension cmdlet은 PowerShell DSC 확장에 필요한 설정을 VM 구성 개체에 삽입합니다.The Set-AzVMDscExtension cmdlet injects the settings that the PowerShell DSC extension requires into a VM configuration object.

Get-AzVMDscExtension cmdlet은 특정 VM의 DSC 확장 상태를 가져옵니다.The Get-AzVMDscExtension cmdlet retrieves the DSC extension status of a specific VM.

Get-AzVMDscExtensionStatus cmdlet은 DSC 확장 처리기에 의해 실행되는 DSC 구성의 상태를 가져옵니다.The Get-AzVMDscExtensionStatus cmdlet retrieves the status of the DSC configuration that's enacted by the DSC extension handler. 이 작업은 단일 VM 또는 VM 그룹에서 수행할 수 있습니다.This action can be performed on a single VM or on a group of VMs.

Remove-AzVMDscExtension cmdlet은 특정 VM에서 확장 처리기를 제거합니다.The Remove-AzVMDscExtension cmdlet removes the extension handler from a specific VM. 이 cmdlet은 구성을 제거하거나 WMF를 제거하거나 VM에 적용된 설정을 변경하지 않습니다.This cmdlet does not remove the configuration, uninstall WMF, or change the applied settings on the VM. 확장 처리기를 제거합니다.It only removes the extension handler.

Resource Manager DSC 확장 cmdlet에 대한 중요 정보:Important information about Resource Manager DSC extension cmdlets:

  • Azure Resource Manager cmdlets는 동기입니다.Azure Resource Manager cmdlets are synchronous.
  • ResourceGroupName, VMName, ArchiveStorageAccountName, VersionLocation 매개 변수는 모두 필수입니다.The ResourceGroupName, VMName, ArchiveStorageAccountName, Version, and Location parameters are all required.
  • ArchiveResourceGroupName 매개 변수는 선택 사항입니다.ArchiveResourceGroupName is an optional parameter. 스토리지 계정이 VM을 만들 위치가 아닌 다른 리소스 그룹에 속해 있는 경우 이 매개 변수를 지정할 수 있습니다.You can specify this parameter when your storage account belongs to a different resource group than the one where the VM is created.
  • AutoUpdate 스위치를 사용하면 최신 버전이 제공될 시 확장 처리기를 자동으로 업데이트할 수 있습니다.Use the AutoUpdate switch to automatically update the extension handler to the latest version when it's available. 이 매개 변수를 사용하면 새 버전의 WMF가 릴리스될 때 VM이 다시 시작될 수 있습니다.This parameter has the potential to cause restarts on the VM when a new version of WMF is released.

cmdlet으로 시작Get started with cmdlets

Azure DSC 확장은 DSC 구성 문서를 사용하여 배포하는 동안 Azure VM을 직접 구성할 수 있습니다.The Azure DSC extension can use DSC configuration documents to directly configure Azure VMs during deployment. 이 단계에서는 노드가 Automation에 등록되지 않습니다.This step doesn't register the node to Automation. 노드는 중앙 집중식으로 관리되지 않습니다.The node is not centrally managed.

다음 예제에서는 구성의 간단한 예제를 보여줍니다.The following example shows a simple example of a configuration. 구성을 로컬에 iisInstall.ps1로 저장합니다.Save the configuration locally as iisInstall.ps1.

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

다음 명령을 실행하면 지정된 VM에 iisInstall.ps1 스크립트가 배치됩니다.The following commands place the iisInstall.ps1 script on the specified VM. 또한 이 명령은 구성을 실행한 후 상태를 다시 보고합니다.The commands also execute the configuration, and then report back on status.

$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 deployment

Azure CLI를 사용하여 DSC 확장을 기존 가상 머신에 배포할 수 있습니다.The Azure CLI can be used to deploy the DSC extension to an existing virtual machine.

Windows를 실행하는 가상 머신:For a virtual machine running Windows:

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

Linux를 실행하는 가상 머신:For a virtual machine running Linux:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSCForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 2.7 --protected-settings '{}' \
  --settings '{}'

Azure Portal 기능Azure portal functionality

포털에서 DSC를 설정하려면To set up DSC in the portal:

  1. VM으로 이동합니다.Go to a VM.
  2. 설정 에서 확장 을 선택합니다.Under Settings, select Extensions.
  3. 만들어진 새 페이지에서 + 추가 를 선택한 다음, PowerShell Desired State Configuration 을 선택합니다.In the new page that's created, select + Add, and then select PowerShell Desired State Configuration.
  4. 확장 정보 페이지의 아래쪽에서 만들기 를 클릭합니다.Click Create at the bottom of the extension information page.

포털에서는 다음 입력을 수집합니다.The portal collects the following input:

  • 구성 모듈 또는 스크립트: 이 필드는 필수입니다(양식이 기본 구성 스크립트에 대해 업데이트되지 않음).Configuration Modules or Script: This field is mandatory (the form has not been updated for the default configuration script). 구성 모듈 및 스크립트에는 구성 스크립트가 있는 .ps1 파일 또는 루트에 .ps1 구성 스크립트가 있는 .zip 파일이 필요합니다.Configuration modules and scripts require a .ps1 file that has a configuration script or a .zip file with a .ps1 configuration script at the root. .zip 파일을 사용하는 경우 모든 종속 리소스를 .zip의 모듈 폴더에 포함해야 합니다.If you use a .zip file, all dependent resources must be included in module folders in the .zip. Azure PowerShell SDK에 포함된 Publish-AzureVMDscConfiguration -OutputArchivePath cmdlet을 사용하여 .zip 파일을 만들 수 있습니다.You can create the .zip file by using the Publish-AzureVMDscConfiguration -OutputArchivePath cmdlet that's included in the Azure PowerShell SDK. .zip 파일은 사용자 Blob Storage로 업로드되고 SAS 토큰에 의해 보호됩니다.The .zip file is uploaded to your user blob storage and secured by an SAS token.

  • 구성의 모듈 정규화된 이름: .ps1 파일에 여러 개의 구성 함수를 포함할 수 있습니다.Module-qualified Name of Configuration: You can include multiple configuration functions in a .ps1 file. 구성 .ps1 스크립트의 이름 뒤에 \ 및 구성 함수의 이름을 입력합니다.Enter the name of the configuration .ps1 script followed by \ and the name of the configuration function. 예를 들어, .ps1 스크립트 이름이 configuration.ps1이고 구성이 IisInstall 이면 configuration.ps1\IisInstall 을 입력합니다.For example, if your .ps1 script has the name configuration.ps1 and the configuration is IisInstall, enter configuration.ps1\IisInstall.

  • 구성 인수: 구성 함수가 인수를 사용하는 경우 argumentName1=value1,argumentName2=value2 형식으로 여기에 입력합니다.Configuration Arguments: If the configuration function takes arguments, enter them here in the format argumentName1=value1,argumentName2=value2. 이 형식은 PowerShell cmdlet 또는 Resource Manager 템플릿에서 구성 인수가 수락되는 형식과는 다릅니다.This format is a different format in which configuration arguments are accepted in PowerShell cmdlets or Resource Manager templates.

  • 구성 데이터 PSD1 파일: 구성에 .psd1의 구성 데이터 파일이 필요한 경우 이 필드를 사용하여 데이터 파일을 선택하고 사용자 Blob Storage에 업로드합니다.Configuration Data PSD1 File: If your configuration requires a configuration data file in .psd1, use this field to select the data file and upload it to your user blob storage. 구성 데이터 파일은 Blob Storage의 SAS 토큰에 의해 보호됩니다.The configuration data file is secured by an SAS token in blob storage.

  • WMF 버전: VM에 설치해야 하는 WMF(Windows Management Framework)의 버전을 지정합니다.WMF Version: Specifies the version of Windows Management Framework (WMF) that should be installed on your VM. 이 속성을 최신으로 설정하면 WMF의 가장 최신 버전이 설치됩니다.Setting this property to latest installs the most recent version of WMF. 현재, 이 속성에 대해 사용할 수 있는 값은 4.0, 5.0, 5.1 및 최신뿐입니다.Currently, the only possible values for this property are 4.0, 5.0, 5.1, and latest. 가능한 값은 업데이트에 따라 달라집니다.These possible values are subject to updates. 기본값은 latest 입니다.The default value is latest.

  • 데이터 컬렉션: 확장에서 원격 분석을 수집할지를 결정합니다.Data Collection: Determines if the extension will collect telemetry. 자세한 내용은 Azure DSC 확장 데이터 컬렉션을 참조하세요.For more information, see Azure DSC extension data collection.

  • 버전: 설치할 DSC 확장의 버전을 지정합니다.Version: Specifies the version of the DSC extension to install. 버전에 대한 정보는 DSC 확장 버전 기록을 참조하세요.For information about versions, see DSC extension version history.

  • 부 버전 자동 업그레이드: 이 필드는 cmdlet에서 AutoUpdate 스위치에 매핑하고 설치하는 동안 확장을 최신 버전으로 자동 업데이트할 수 있습니다.Auto Upgrade Minor Version: This field maps to the AutoUpdate switch in the cmdlets and enables the extension to automatically update to the latest version during installation. 는 확장 처리기가 최신 버전을 사용하도록 지시하고, 아니요버전 을 강제로 설치되도록 지정합니다.Yes will instruct the extension handler to use the latest available version and No will force the Version specified to be installed. 또는 아니요 를 선택하지 않으면 아니요 를 선택한 것과 동일합니다.Selecting neither Yes nor No is the same as selecting No.

로그Logs

확장에 대한 로그는 다음 위치에 저장됩니다. C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number>Logs for the extension are stored in the following location: C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number>

다음 단계Next steps