기존 에이전트 기반 하이브리드 작업자를 확장 기반 하이브리드 작업자로 마이그레이션

Important

Azure Automation 에이전트 기반 사용자 Hybrid Runbook Worker(Windows 및 Linux)는 2024년 8월 31일에 사용 중지되며 이 날짜 이후에는 지원되지 않습니다. 2024년 8월 31일 이전에 기존 에이전트 기반 사용자 Hybrid Runbook Worker를 확장 기반 작업자로 마이그레이션을 완료해야 합니다. 또한 2023년 11월 1일부터는 새로운 에이전트 기반 Hybrid Worker를 만들 수 없습니다. 자세히 알아보기.

이 문서에서는 확장 기반 사용자 Hybrid Runbook Worker의 이점과 기존 에이전트 기반 사용자 Hybrid Runbook Worker를 확장 기반 Hybrid Worker로 마이그레이션하는 방법에 대해 설명합니다.

Azure Automation에서 지원하는 두 개의 Hybrid Runbook Worker 설치 플랫폼이 있습니다.

  • 에이전트 기반 Hybrid Runbook 작업자(V1) - 에이전트 기반 Hybrid Runbook 작업자는 Log Analytics 에이전트에 종속됩니다.
  • 확장 기반 Hybrid Runbook 작업자(V2) - 확장 기반 Hybrid Runbook 작업자는 VM(가상 머신) 확장 프레임워크를 통해 Hybrid Runbook 작업자 역할의 네이티브 통합을 제공합니다. 

Hybrid Runbook Worker에서 Runbook을 실행하는 프로세스는 둘 다 동일하게 유지됩니다.

에이전트 기반 작업자에 비해 확장 기반 사용자 Hybrid Runbook Worker의 이점

확장 기반 방식의 목적은 Hybrid Worker의 설치 및 관리를 간소화하고 에이전트 기반 버전 작업의 복잡성을 제거하는 것입니다. 다음은 몇 가지 주요 이점입니다.

  • 원활한 온보딩 – Hybrid Runbook 작업자 온보딩을 위한 에이전트 기반 방식은 Log Analytics 에이전트에 의존하며, 이는 다단계 프로세스이고 시간 소모적이며 오류가 발생하기 쉽습니다. 확장 기반 방식은 더 많은 보안을 제공하며 더 이상 Log Analytics 에이전트에 의존하지 않습니다.

  • 관리 용이성 – Hybrid Runbook Worker용 ARM(Azure Resource Manager) ID와의 네이티브 통합을 제공하고 정책 및 템플릿을 통해 대규모 거버넌스를 위한 유연성을 제공합니다.

  • Microsoft Entra ID 기반 인증 – Microsoft Entra ID에서 제공하는 VM 시스템이 할당한 관리 ID를 사용합니다. 이는 ID 및 리소스 자격 증명의 제어 및 관리를 중앙 집중화합니다.

  • 통합 환경 – Azure 및 Azure 외 Arc 지원 컴퓨터를 관리하는 데 동일한 환경을 제공합니다.

  • 여러 온보딩 채널 – Azure Portal, PowerShell cmdlet, Bicep, ARM 템플릿, REST API 및 Azure CLI를 통해 확장 기반 작업자를 온보딩하고 관리하도록 선택할 수 있습니다.

  • 기본 자동 업그레이드 – 기본적으로 부 버전의 자동 업그레이드를 제공하므로 최신 버전으로 업데이트된 상태를 유지하는 관리 용이성이 크게 줄어듭니다. 수동 오버헤드 없이 보안 또는 기능 업데이트를 활용하려면 자동 업그레이드를 사용하도록 설정하는 것이 좋습니다. 언제든지 자동 업그레이드를 옵트아웃할 수도 있습니다. 주 버전 업그레이드는 현재 지원되지 않으며 수동으로 관리해야 합니다.

참고 항목

확장 기반 Hybrid Runbook Worker는 사용자 Hybrid Runbook Worker 형식만 지원하며 업데이트 관리 기능에 필요한 시스템 Hybrid Runbook Worker는 포함하지 않습니다.

필수 조건

머신 최소 요구 사항

  • 두 개의 코어
  • 4GB의 RAM
  • 비 Azure 머신에는 Azure Connected Machine 에이전트가 설치되어 있어야 합니다. AzureConnectedMachineAgent를 설치하려면 Arc 지원 서버의 경우 Azure Portal에서 Azure에 하이브리드 컴퓨터 연결을 참조하거나 VMware 가상 머신 Azure Arc 관리를 참조하여 Arc 지원 VMware vSphere VM에 대한 게스트 관리를 사용하도록 설정합니다.
  • 시스템이 할당한 관리 ID는 Azure 가상 머신, Arc 사용 서버 또는 Arc 사용 VMware vSphere VM에서 사용하도록 설정해야 합니다. 시스템 할당 관리 ID가 사용하도록 설정되지 않은 경우 Azure Portal을 통한 설치 프로세스의 일부로 사용하도록 설정됩니다.

지원되는 운영 체제

Windows(x64) Linux(x64)
● Windows Server 2022(Server Core 포함)
● Windows Server 2019(Server Core 포함)
● Windows Server 2016, 버전 1709 및 1803(Server Core 제외)
● Windows Server 2012, 2012 R2(Server Core 제외)
● Windows 10 Enterprise(다중 세션 포함) 및 Pro
● Debian GNU/Linux 8,9,10, and 11
● Ubuntu 18.04 LTS, 20.04 LTS 및 22.04 LTS
● SUSE Linux Enterprise Server 15.2 및 15.3
● Red Hat Enterprise Linux Server 7, 8 및 9
● CentOS Linux 7 및 8
● SLES(SUSE Linux Enterprise Server) 15
● Rocky Linux 9
● Oracle Linux 7 및 8
Hybrid Worker 확장은 OS 공급업체의 지원 타임라인을 따릅니다. 

기타 요구 사항

Windows(x64) Linux(x64)
Windows PowerShell 5.1(WMF 5.1 다운로드). PowerShell Core가 지원되지 않습니다. Linux 강화를 사용하도록 설정하면 안 됩니다. 
.NET Framework 4.6.2 이상 

Linux의 패키지 요구 사항

필수 패키지 설명 최소 버전
Glibc GNU C 라이브러리 2.5-12
Openssl OpenSSL 라이브러리 1.0(TLS 1.1 및 1.2 지원)
Curl cURL 웹 클라이언트 7.15.5
Python-ctypes Python용 외래 함수 라이브러리 Python 2.x 또는 Python 3.x 필요
PAM 플러그 가능 인증 모듈
선택적 패키지 설명 최소 버전
PowerShell Core PowerShell Runbook을 실행하려면 PowerShell Core를 설치해야 합니다. 지침은 Linux에 PowerShell Core 설치를 참조하세요. 6.0.0

Hybrid Worker 자격 증명에 대한 권한

에이전트 기반 Hybrid Worker가 사용자 지정 Hybrid Worker 자격 증명을 사용하는 경우 확장 기반 Hybrid Worker에서 작업이 일시 중단되지 않도록 다음 권한이 사용자 지정 사용자에게 할당되었는지 확인합니다.

리소스 종류 폴더 권한
Azure VM C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows(읽기 및 실행)
Arc 지원 서버 C:\ProgramData\AzureConnectedMachineAgent\Tokens(읽기)
C:\Packages\Plugins\Microsoft.Azure.Automation.HybridWorker.HybridWorkerForWindows(읽기 및 실행)

참고 항목

  • Arc 지원 서버의 경우 ARC 에이전트를 업데이트할 때마다 제거할 때 사용 권한을 다시 할당해야 합니다.
  • Hybrid Runbook Worker는 현재 VMSS(Virtual Machine Scale Sets)에 대해 지원되지 않습니다.

기존 Agent 기반 Hybrid Worker를 Extension 기반 Hybrid Worker로 마이그레이션

확장 기반 Hybrid Worker의 이점을 활용하려면 모든 기존 에이전트 기반 사용자 Hybrid Worker를 확장 기반 Worker로 마이그레이션해야 합니다. 하이브리드 작업자 머신은 에이전트 기반(V1)확장 기반(V2) 플랫폼 모두에서 공존할 수 있습니다. 확장 기반 설치는 에이전트 기반 Worker의 설치 또는 관리에 영향을 미치지 않습니다.

기존 에이전트 기반 Hybrid Worker에 Hybrid Worker 확장을 설치하려면 다음 단계를 따릅니다.

  1. 프로세스 자동화에서 Hybrid Worker 그룹을 선택한 다음, 기존 Hybrid Worker 그룹을 선택하여 Hybrid Worker 그룹 페이지로 이동합니다.

  2. Hybrid Worker 그룹에서 Hybrid Worker>+ 추가를 선택하여 Hybrid Worker로 머신 추가 페이지로 이동합니다.

  3. 기존 에이전트 기반(V1) 하이브리드 작업자 옆의 확인란을 선택합니다. 에이전트 기반 Hybrid Worker가 나열되지 않으면 Azure Arc Connected Machine Agent가 컴퓨터에 설치되어 있는지 확인합니다. AzureConnectedMachineAgent를 설치하려면 Arc 지원 서버의 경우 Azure Portal에서 Azure에 하이브리드 컴퓨터 연결을 참조하거나 VMware 가상 머신 Azure Arc 관리를 참조하여 Arc 지원 VMware vSphere VM에 대한 게스트 관리를 사용하도록 설정합니다.

    컴퓨터를 하이브리드 작업자로 추가하는 스크린샷

  4. 추가를 선택하여 머신을 그룹에 추가합니다.

    플랫폼 열에는 에이전트 기반(V1)확장 기반(V2)과 동일한 하이브리드 작업자가 표시됩니다. 확장 기반 Hybrid Worker 환경과 사용에 확신이 있으면 에이전트 기반 Worker를 제거할 수 있습니다.

    에이전트 또는 확장 기반 하이브리드 작업자를 보여 주는 플랫폼 필드의 스크린샷

여러 에이전트 기반 Hybrid Worker의 대규모 마이그레이션의 경우 Bicep, ARM 템플릿, PowerShell cmdlet, REST API 및 Azure CLI와 같은 다른 채널을 사용할 수도 있습니다.

Bicep 및 ARM 템플릿, REST API, Azure CLI 및 PowerShell을 사용하여 Hybrid Worker 확장 관리

Bicep 템플릿을 사용하여 새 Hybrid Worker 그룹을 만들고, 새 Azure Windows VM을 만들고, 기존 Hybrid Worker 그룹에 추가할 수 있습니다. Bicep에 대해 자세히 알아봅니다.

예를 들어 설명한 아래 단계에 따라 수행합니다.

  1. 하이브리드 작업자 그룹을 만듭니다.
  2. Azure VM 또는 Arc 지원 서버를 만듭니다. 또는 기존 Azure VM 또는 Arc 지원 서버를 사용할 수도 있습니다.
  3. Azure VM 또는 Arc 지원 서버를 위에서 만든 Hybrid Worker 그룹에 연결합니다.
  4. 새 GUID를 생성하고 Hybrid Worker의 이름으로 전달합니다.
  5. VM의 시스템이 할당한 관리 ID를 사용하도록 설정합니다.
  6. VM에 Hybrid Worker 확장을 설치합니다.
  7. 확장이 VM에 성공적으로 설치되었는지 확인하려면 Azure Portal에서 VM >확장 탭으로 이동하여 VM 에 설치된 Hybrid Worker 확장의 상태를 확인합니다.
param automationAccount string
param automationAccountLocation string
param workerGroupName string

@description('Name of the virtual machine.')
param virtualMachineName string

@description('Username for the Virtual Machine.')
param adminUsername string

@description('Password for the Virtual Machine.')
@minLength(12)
@secure()
param adminPassword string

@description('Location for the VM.')
param vmLocation string = 'North Central US'

@description('Size of the virtual machine.')
param vmSize string = 'Standard_DS1_v2'

@description('The Windows version for the VM. This will pick a fully patched image of this given Windows version.')
@allowed([
  '2008-R2-SP1'
  '2012-Datacenter'
  '2012-R2-Datacenter'
  '2016-Nano-Server'
  '2016-Datacenter-with-Containers'
  '2016-Datacenter'
  '2019-Datacenter'
  '2019-Datacenter-Core'
  '2019-Datacenter-Core-smalldisk'
  '2019-Datacenter-Core-with-Containers'
  '2019-Datacenter-Core-with-Containers-smalldisk'
  '2019-Datacenter-smalldisk'
  '2019-Datacenter-with-Containers'
  '2019-Datacenter-with-Containers-smalldisk'
])
param osVersion string = '2019-Datacenter'

@description('DNS name for the public IP')
param dnsNameForPublicIP string

var nicName_var = 'myVMNict'
var addressPrefix = '10.0.0.0/16'
var subnetName = 'Subnet'
var subnetPrefix = '10.0.0.0/24'
var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName_var, subnetName)
var vmName_var = virtualMachineName
var virtualNetworkName_var = 'MyVNETt'
var publicIPAddressName_var = 'myPublicIPt'
var networkSecurityGroupName_var = 'default-NSGt'
var UniqueStringBasedOnTimeStamp = uniqueString(resourceGroup().id)

resource publicIPAddressName 'Microsoft.Network/publicIPAddresses@2020-08-01' = {
  name: publicIPAddressName_var
  location: vmLocation
  properties: {
    publicIPAllocationMethod: 'Dynamic'
    dnsSettings: {
      domainNameLabel: dnsNameForPublicIP
    }
  }
}

resource networkSecurityGroupName 'Microsoft.Network/networkSecurityGroups@2020-08-01' = {
  name: networkSecurityGroupName_var
  location: vmLocation
  properties: {
    securityRules: [
      {
        name: 'default-allow-3389'
        properties: {
          priority: 1000
          access: 'Allow'
          direction: 'Inbound'
          destinationPortRange: '3389'
          protocol: 'Tcp'
          sourceAddressPrefix: '*'
          sourcePortRange: '*'
          destinationAddressPrefix: '*'
        }
      }
    ]
  }
}

resource virtualNetworkName 'Microsoft.Network/virtualNetworks@2020-08-01' = {
  name: virtualNetworkName_var
  location: vmLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        addressPrefix
      ]
    }
    subnets: [
      {
        name: subnetName
        properties: {
          addressPrefix: subnetPrefix
          networkSecurityGroup: {
            id: networkSecurityGroupName.id
          }
        }
      }
    ]
  }
}

resource nicName 'Microsoft.Network/networkInterfaces@2020-08-01' = {
  name: nicName_var
  location: vmLocation
  properties: {
    ipConfigurations: [
      {
        name: 'ipconfig1'
        properties: {
          privateIPAllocationMethod: 'Dynamic'
          publicIPAddress: {
            id: publicIPAddressName.id
          }
          subnet: {
            id: subnetRef
          }
        }
      }
    ]
  }
  dependsOn: [

    virtualNetworkName
  ]
}

resource vmName 'Microsoft.Compute/virtualMachines@2020-12-01' = {
  name: vmName_var
  location: vmLocation
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    hardwareProfile: {
      vmSize: vmSize
    }
    osProfile: {
      computerName: vmName_var
      adminUsername: adminUsername
      adminPassword: adminPassword
    }
    storageProfile: {
      imageReference: {
        publisher: 'MicrosoftWindowsServer'
        offer: 'WindowsServer'
        sku: osVersion
        version: 'latest'
      }
      osDisk: {
        createOption: 'FromImage'
      }
    }
    networkProfile: {
      networkInterfaces: [
        {
          id: nicName.id
        }
      ]
    }
  }
}

resource automationAccount_resource 'Microsoft.Automation/automationAccounts@2021-06-22' = {
  name: automationAccount
  location: automationAccountLocation
  properties: {
    sku: {
      name: 'Basic'
    }
  }
}

resource automationAccount_workerGroupName 'Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups@2022-02-22' = {
  parent: automationAccount_resource
  name: workerGroupName
  dependsOn: [

    vmName
  ]
}

resource automationAccount_workerGroupName_testhw_UniqueStringBasedOnTimeStamp 'Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/hybridRunbookWorkers@2021-06-22' = {
  parent: automationAccount_workerGroupName
  name: guid('testhw', UniqueStringBasedOnTimeStamp)
  properties: {
    vmResourceId: resourceId('Microsoft.Compute/virtualMachines', virtualMachineName)
  }
  dependsOn: [
    vmName
  ]
}

resource virtualMachineName_HybridWorkerExtension 'Microsoft.Compute/virtualMachines/extensions@2022-03-01' = {
  name: '${virtualMachineName}/HybridWorkerExtension'
  location: vmLocation
  properties: {
    publisher: 'Microsoft.Azure.Automation.HybridWorker'
    type: 'HybridWorkerForWindows'
    typeHandlerVersion: '1.1'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {
      AutomationAccountURL: automationAccount_resource.properties.automationHybridServiceUrl
    }
  }
  dependsOn: [
    vmName
  ]
}

output output1 string = automationAccount_resource.properties.automationHybridServiceUrl

에이전트 기반 Hybrid Worker 제거

  1. 관리자 모드에서 PowerShell 세션을 열고 다음 명령을 실행합니다.

     Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\HybridRunbookWorker\<AutomationAccountID>\<HybridWorkerGroupName>" -Force -Verbose
    
  2. 프로세스 자동화에서 Hybrid Worker 그룹을 선택한 다음, Hybrid Worker 그룹을 선택하여 Hybrid Worker 그룹 페이지로 이동합니다.

  3. Hybrid Worker 그룹에서 Hybrid Worker를 선택합니다.

  4. Hybrid Worker 그룹에서 삭제하려는 머신 옆에 있는 확인란을 선택합니다.

  5. 에이전트 기반 Windows Hybrid Worker를 제거하려면 삭제를 선택합니다.

    참고 항목

    • Automation 계정에서 Private Link 사용하지 않도록 설정하면 Hybrid Runbook 작업자를 제거하는 데 최대 60분이 걸릴 수 있습니다.
    • Hybrid Worker를 제거하면 컴퓨터에서 Hybrid Worker 인증 인증서가 45분간 유효합니다.

다음 단계