Azure Linux VM 에이전트 개요

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 플랜을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

Microsoft Azure Linux VM 에이전트(waagent)는 Azure 패브릭 컨트롤러와의 VM(가상 머신) 상호 작용과 함께 Linux 및 FreeBSD 프로비전을 관리합니다. 또한 Azure에서는 프로비전 기능을 제공하는 Linux 에이전트 외에도 일부 Linux OS에 cloud-init를 사용할 수 있는 옵션을 제공합니다.

Linux 에이전트는 Linux 및 FreeBSD Azure Virtual Machines 배포에 대해 다음과 같은 기능을 제공합니다. 자세한 내용은 GitHub의 Azure Linux VM 에이전트 추가 정보를 참조하세요.

이미지 프로비전

  • 사용자 계정 만들기
  • SSH 인증 유형 구성
  • SSH 공개 키 및 키 쌍 배포
  • 호스트 이름 설정
  • 플랫폼 DNS에 호스트 이름 게시
  • 플랫폼에 SSH 호스트 키 지문 보고
  • 리소스 디스크 관리
  • 리소스 디스크 포맷 및 탑재
  • 스왑 공간 구성

네트워킹

  • 플랫폼 DHCP 서버와의 호환성을 개선하기 위한 경로 관리
  • 네트워크 인터페이스 이름의 안정성 확인

커널

  • 가상 NUMA 구성(커널 2.6.37에 대해 사용하지 않도록 설정)
  • /dev/random에 대한 Hyper-V 엔트로피 이용
  • 원격일 수 있는 루트 디바이스에 대한 SCSI 시간 제한 구성

진단

  • 직렬 포트로 콘솔 리디렉션 제공

System Center Virtual Machine Manager 배포

  • System Center Virtual Machine Manager 2012 R2 환경에서 실행되는 경우 Linux용 Virtual Machine Manager 에이전트 검색 및 부트스트랩

VM 확장

  • Microsoft 및 파트너가 작성한 구성 요소를 Linux VM에 삽입하여 소프트웨어 및 구성 자동화를 사용하도록 설정

GitHub에서 VM 확장 참조 구현을 찾을 수 있습니다.

통신

플랫폼에서 에이전트로의 정보 흐름은 다음 두 채널을 통해 진행됩니다.

  • VM 배포를 위해 부팅 시 연결된 DVD입니다. 이 DVD에는 SSH 키 쌍 이외의 모든 프로비전 정보가 포함된 OVF(Open Virtualization Format) 규격 구성 파일이 포함되어 있습니다.
  • 배포 및 토폴로지 구성을 가져오는 데 사용된 REST API를 공개하는 TCP 엔드포인트입니다.

요구 사항

테스트 결과 다음 시스템이 Azure Linux VM 에이전트와 작동하는 것을 확인했습니다.

참고 항목

이 목록은 Azure의 보증된 Linux 배포판과 다를 수 있습니다.

배포 X64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+, 8.x+ 7.x+
Debian 10개 이상 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ 지원되지 않음
Oracle Linux 6.4+, 7.x+, 8.x+ 지원되지 않음
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Important

RHEL/Oracle Linux 6.10은 연장 수명 주기 지원을 사용할 수 있는 유일한 RHEL/OL 6 버전입니다. 연장된 유지 관리는 2024년 6월 30일에 종료됩니다.

기타 지원되는 시스템:

  • 에이전트는 설명서에 나열된 시스템보다 더 많은 시스템에서 작동합니다. 그러나 보증 목록에 없는 배포판을 테스트하거나 지원하지 않습니다. 특히 FreeBSD는 보증되지 않습니다. 고객은 FreeBSD 8을 시도할 수 있으며 문제가 발생하면 GitHub 리포지토리에서 문제를 열 수 있으며 저희가 도움을 줄 수 있습니다.

제대로 작동하기 위해 Linux 에이전트는 다음 시스템 패키지에 의존합니다.

  • Python 2.6 이상
  • OpenSSL 1.0 이상
  • OpenSSH 5.3 이상
  • 파일 시스템 유틸리티: sfdisk, fdisk, mkfs, parted
  • 암호 도구: chpasswd, sudo
  • 텍스트 처리 도구: sed, grep
  • 네트워크 도구: ip-route
  • UDF 파일 시스템 탑재에 대한 커널 지원

VM에 IP 주소 168.63.129.16에 대한 액세스 권한이 있는지 확인합니다. 자세한 내용은 IP 주소 168.63.129.16이란? 페이지를 참조하세요.

설치

Azure Linux VM 에이전트를 설치하고 업그레이드하는 지원 방법은 배포 패키지 리포지토리의 RPM 또는 DEB 패키지를 사용합니다. 모든 인증 배포 공급자는 이미지 및 리포지토리에 Azure Linux 에이전트 패키지를 통합합니다. 일부 Linux 배포판은 Azure Linux VM 에이전트 자동 업데이트 기능을 사용하지 않도록 설정할 수 있으며 일부 리포지토리에는 이전 버전도 포함될 수 있습니다. 최신 확장에 문제가 있을 수 있으므로 안정적인 최신 버전을 설치하는 것이 좋습니다. Azure Linux VM 에이전트가 제대로 업데이트되고 있는지 확인하려면 /etc/waagent.conf 파일에 AutoUpdate.Enabled=Y 옵션을 사용하거나 단순히 해당 옵션을 주석으로 처리하여 기본값도 적용되는 것이 좋습니다. AutoUpdate.Enabled=N는 Azure Linux VM 에이전트가 제대로 업데이트되는 것을 허용하지 않습니다.

원본에서 또는 사용자 지정 위치 또는 접두사로 설치하는 것과 같은 고급 설치 옵션은 Microsoft Azure Linux VM 에이전트를 참조하세요. 이러한 시나리오 이외에는 원본에서 Azure Linux VM 에이전트를 업그레이드하거나 다시 설치하는 것을 지원하거나 권장하지 않습니다.

명령줄 옵션

플래그

  • verbose: 지정된 명령의 세부 정보 표시가 향상됩니다.
  • force: 일부 명령의 대화형 확인을 건너뜁니다.

명령

  • help: 지원되는 명령 및 플래그를 나열합니다.

  • deprovision: 시스템을 정리하여 다시 프로비전하기에 적합하도록 만듭니다. 작업은 다음을 삭제합니다.

    • 구성 파일에서 Provisioning.RegenerateSshHostKeyPairy인 경우 모든 SSH 호스트 키입니다.
    • /etc/resolv.confNameserver 구성.
    • 구성 파일에서 Provisioning.DeleteRootPasswordy인 경우 /etc/shadow의 루트 비밀번호입니다.
    • 캐시된 DHCP 클라이언트 임대.

    클라이언트는 호스트 이름을 localhost.localdomain로 다시 설정합니다.

    Warning

    프로비전 해제 명령을 사용한다고 해서 이미지에서 중요한 정보를 모두 지우고 다시 배포하기에 적합하게 만든다고 보증할 수는 없습니다.

  • deprovision+user:모든 작업을 수행하고 마지막으로 프로비전된 사용자 계정(/var/lib/waagent에서 얻은) deprovision 및 관련 데이터를 삭제합니다. 이전에 Azure에서 프로비전된 이미지를 캡처하고 다시 사용할 수 있도록 프로비전 해제할 때 이 매개 변수를 사용합니다.

  • version: waagent의 버전을 표시합니다.

  • serialconsole: ttyS0(첫 번째 직렬 포트)을 부팅 콘솔로 표시하도록 GRUB를 구성합니다. 이 옵션은 커널 부팅 로그를 직렬 포트로 보내고 디버깅에 사용할 수 있도록 설정합니다.

  • daemon: waagent를 디먼으로 실행하여 플랫폼 상호 작용을 관리합니다. 이 인수는 waagent init 스크립트에서 waagent에 지정됩니다.

  • start: waagent를 백그라운드 프로세스로 실행합니다.

구성

/etc/waagent.conf 구성 파일은 waagent의 동작을 제어합니다. 다음은 구성 파일의 예제입니다.

Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.AllowResetSysUser=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
HttpProxy.Host=None
HttpProxy.Port=None
AutoUpdate.Enabled=y

구성 옵션은 Boolean,String, Integer의 세 가지 유형입니다. Boolean 구성 옵션을 y 또는 n로 지정할 수 있습니다. 특수 키워드 None은 일부 문자열 형식 구성 항목에 사용할 수 있습니다.

Provisioning.Enabled

Type: Boolean
Default: y

이 옵션을 통해 사용자가 에이전트의 프로비전 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다. 유효한 값은 yn입니다. 프로비전을 사용하지 않도록 설정한 경우 이미지의 SSH 호스트 및 사용자 키는 유지되며 Azure 프로비전 API에서 지정한 모든 구성은 무시됩니다.

참고 항목

프로비전에 cloud-init를 사용하는 Ubuntu 클라우드 이미지에서 Provisioning.Enabled 매개 변수의 기본값은 n입니다.

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

값이 y인 경우 에이전트는 프로비전 프로세스 중에 /etc/shadow 파일의 루트 암호를 지웁니다.

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

값이 y이면 에이전트는 프로비전 프로세스 중에 ECDSA, DSA, RSA를 포함하여 /etc/ssh/에서 모든 SSH 호스트 키 쌍을 삭제합니다. 에이전트는 단일 새 키 쌍을 생성합니다.

Provisioning.SshHostKeyPairType 항목을 사용하여 새 키 쌍에 대한 암호화 형식을 구성합니다. 일부 배포에서는 SSH 디먼이 다시 시작될 때(예: 재부팅 시) 누락된 모든 암호화 종류에 대한 SSH 키 쌍을 다시 만듭니다.

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

이 옵션을 SSH 디먼이 VM에서 지원하는 암호화 알고리즘 유형으로 설정할 수 있습니다. 일반적으로 지원되는 값은 rsa, dsa, ecdsa입니다. Windows의 putty.exe 파일은 ecdsa를 지원하지 않습니다. 따라서 Windows에서 putty.exe를 사용하여 Linux 배포에 연결하려면 rsadsa를 사용합니다.

Provisioning.MonitorHostName

Type: Boolean
Default: y

값이 y인 경우 waagent는 hostname 명령에서 반환한 대로 호스트 이름 변경에 대해 Linux VM을 모니터링합니다. 그런 다음, Waagent는 변경 사항을 반영하도록 이미지의 네트워킹 구성을 자동으로 업데이트합니다. 이름 변경을 DNS 서버로 푸시하려면 VM에서 네트워킹이 다시 시작됩니다. 이로 인해 인터넷 연결이 잠시 끊깁니다.

Provisioning.DecodeCustomData

Type: Boolean
Default: n

값이 y이면 waagent는 Base64에서 CustomData를 디코딩합니다.

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

값이 y이면 waagent는 프로비전 후 CustomData를 실행합니다.

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

이 옵션을 사용하면 시스템 사용자의 암호를 다시 설정할 수 있습니다. 기본적으로 비활성화되어 있습니다.

Provisioning.PasswordCryptId

Type: String
Default: 6

이 옵션은 crypt에서 암호 해시를 생성할 때 사용하는 알고리즘을 지정합니다. 유효한 값은 다음과 같습니다.

  • 1: MD5
  • 2a: Blowfish
  • 5: SHA-256
  • 6: SHA-512

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

이 옵션은 암호 해시를 생성하는 데 사용되는 임의 솔트 길이를 지정합니다.

ResourceDisk.Format

Type: Boolean
Default: y

값이 y인 경우 waagent는 사용자가 ResourceDisk.Filesystem에서 요청한 파일 시스템 형식이 ntfs이 아닌 한 플랫폼에서 제공하는 리소스 디스크를 포맷하고 탑재합니다. 에이전트는 디스크에서 단일 Linux 파티션(ID 83)을 사용할 수 있게 합니다. 이 파티션이 성공적으로 탑재될 수 있으면 포맷되지 않습니다.

ResourceDisk.Filesystem

Type: String
Default: ext4

이 옵션은 리소스 디스크의 파일 시스템 유형을 지정합니다. 지원되는 값은 Linux 배포에 따라 달라집니다. 문자열이 X이면, mkfs.X가 Linux 이미지에 표시됩니다.

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

이 옵션은 리소스 디스크가 탑재되는 경로를 지정합니다. 리소스 디스크는 임시 디스크이며, VM의 프로비전을 해제할 때 비울 수 있습니다.

ResourceDisk.MountOptions

Type: String
Default: None

이 옵션은 mount -o 명령에 전달될 디스크 탑재 옵션을 지정합니다. 값은 쉼표로 구분된 값 목록입니다(예: nodev,nosuid). 자세한 내용은 mount(8)매뉴얼 페이지를 참조하세요.

ResourceDisk.EnableSwap

Type: Boolean
Default: n

이 옵션을 설정하면 에이전트가 리소스 디스크에 스왑 파일(/swapfile)을 만들어 시스템 스왑 공간에 추가합니다.

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

이 옵션은 스왑 파일의 크기를 MB 단위로 지정합니다.

Logs.Verbose

Type: Boolean
Default: n

이 옵션을 설정하면 로그 세부 정보 표시가 향상됩니다. waagent에서 /var/log/waagent.log에 로그하고, 시스템 logrotate 기능을 활용하여 로그를 순환시킵니다.

OS.EnableRDMA

Type: Boolean
Default: n

이 옵션을 설정하면 에이전트에서 기본 하드웨어의 펌웨어 버전과 일치하는 RDMA 커널 드라이버를 설치하고 로드하려고 시도합니다.

OS.RootDeviceScsiTimeout

Type: Integer
Default: 300

이 옵션은 OS 디스크 및 데이터 드라이브에서 SCSI 시간 제한을 초 단위로 구성합니다. 설정하지 않은 경우 시스템 기본값이 사용됩니다.

OS.OpensslPath

Type: String
Default: None

이 옵션은 openssl 이진의 대체 경로를 지정하는 데 사용하여 암호화 작업에 사용할 수 있습니다.

HttpProxy.Host, HttpProxy.Port

Type: String
Default: None

이 옵션을 설정하면 에이전트에서 이 프록시 서버를 사용하여 인터넷에 액세스합니다.

AutoUpdate.Enabled

Type: Boolean
Default: y

목표 상태 처리를 위해 자동 업데이트 사용 또는 사용 안 함. 기본값은 y입니다.

Azure Linux 게스트 에이전트의 자동 로그 수집

버전 2.7 이상부터 Azure Linux 게스트 에이전트에는 일부 로그를 자동으로 수집하고 업로드하는 기능이 있습니다. 이 기능에는 현재 systemd가 필요합니다. 컬렉션을 수행하는 동안 azure-walinuxagent-logcollector.slice이라는 새 systemd 조각을 사용하여 리소스를 관리합니다.

목적은 오프라인 분석을 쉽게 하는 것입니다. 에이전트는 VM의 호스트에 업로드하기 전에 일부 진단 로그의 .zip 파일을 생성합니다. 엔지니어링 팀과 지원 전문가는 파일을 검색하여 VM 소유자의 문제를 조사할 수 있습니다. Azure Linux 게스트 에이전트에서 수집한 파일에 대한 자세한 기술 정보는 에이전트의 GitHub 리포지토리에 있는 azurelinuxagent/common/logcollector_manifests.py 파일에서 찾을 수 있습니다.

/etc/waagent.conf를 편집하여 이 옵션을 사용하지 않도록 설정할 수 있습니다. Logs.Collectn으로 업데이트합니다.

Ubuntu 클라우드 이미지

Ubuntu Cloud Images는 cloud-init를 사용하여 Azure Linux VM 에이전트가 관리하는 많은 구성 작업을 수행합니다. 적용되는 차이점은 다음과 같습니다.

  • 프로비전 작업을 수행하기 위해 cloud-init을 사용하는 Ubuntu 클라우드 이미지에서 Provisioning.Enabled의 기본값은 n입니다.

  • 다음 구성 매개 변수는 cloud-init을 사용하여 리소스 디스크와 swap 공간을 관리하는 Ubuntu 클라우드 이미지에 적용되지 않습니다.

    • ResourceDisk.Format
    • ResourceDisk.Filesystem
    • ResourceDisk.MountPoint
    • ResourceDisk.EnableSwap
    • ResourceDisk.SwapSizeMB

프로비전 중 Ubuntu 클라우드 이미지에서 리소스 디스크 탑재 지점 및 스왑 공간을 구성하려면 다음 리소스를 참조하세요.