Azure용 Ubuntu 가상 머신 준비
적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합
Ubuntu는 이제 Ubuntu 클라우드 이미지 웹 페이지에서 다운로드할 수 있는 공식 Azure VHD(가상 하드 디스크)를 게시합니다. 다음 수동 절차를 사용하는 대신 Azure용 특수 Ubuntu 이미지를 직접 빌드해야 하는 경우 알려진 작동 VHD로 시작하고 필요에 따라 사용자 지정합니다. 다음 위치에서 항상 최신 이미지 릴리스를 찾을 수 있습니다.
- Ubuntu 18.04/Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.zip
필수 조건
이 문서에서는 VHD에 Ubuntu Linux OS(운영 체제)를 이미 설치했다고 가정합니다. .vhd 파일을 만드는 도구는 여러 가지가 있습니다. 예를 들어 Hyper-V와 같은 가상화 솔루션이 있습니다. 자세한 내용은 Hyper-V 역할 설치 및 VM(가상 머신) 구성을 참조하세요.
Ubuntu 설치 참고 사항
- Azure용 Linux를 준비하는 방법에 대한 추가 팁은 일반 Linux 설치 참고 사항을 참조하세요.
- VHDX 형식은 Azure에서 지원되지 않습니다. 고정된 VHD만 지원됩니다. Hyper-V 관리자 또는
Convert-VHD
cmdlet을 사용하여 디스크를 VHD 형식으로 변환할 수 있습니다. - Linux 시스템을 설치하는 경우 설치 기본값인 경우가 많은 LVM(논리 볼륨 관리자)이 아닌 표준 파티션을 사용하는 것이 좋습니다. 이러한 표준 파티션은 특히 문제 해결을 위해 OS 디스크를 다른 VM에 연결해야 하는 경우 복제된 VM과 LVM 이름이 충돌하지 않도록 방지합니다. 데이터 디스크에서 LVM 또는 RAID를 사용할 수도 있습니다.
- OS 디스크에 스왑 파티션이나 스왑 파일을 구성하지 마세요. 임시 리소스 디스크에 스왑 파일이나 스왑 파티션을 만들도록
cloud-init
프로비전 에이전트를 구성할 수 있습니다. 이 프로세스에 대한 자세한 내용은 다음 단계를 참조하세요. - Azure의 모든 VHD에는 1MB로 정렬된 가상 크기가 있어야 합니다. 원시 디스크에서 VHD로 변환할 때 변환하기 전에 원시 디스크 크기가 1MB의 배수인지 확인해야 합니다. 자세한 내용은 Linux 설치 참고 사항을 참조하세요.
수동 단계
참고 항목
Azure용 사용자 지정 Ubuntu 이미지를 만들기 전에 대신 Ubuntu 클라우드 이미지 웹 페이지에서 미리 빌드되고 테스트된 이미지를 사용하는 것이 좋습니다.
Hyper-V 관리자의 가운데 창에서 VM을 선택합니다.
연결을 선택하여 VM 창을 엽니다.
Ubuntu의 Azure 리포지토리를 사용하도록 이미지의 현재 리포지토리를 바꿉니다.
/etc/apt/sources.list
를 편집하기 전에 백업을 만드는 것이 좋습니다.sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt-get update
이제 Ubuntu Azure 이미지가 Azure 맞춤형 커널을 사용하고 있습니다. OS를 최신 Azure 맞춤형 커널로 업데이트하고 Azure Linux 도구(Hyper-V 종속성 포함)를 설치합니다.
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo reboot
Azure용 추가 커널 매개 변수를 포함하도록 GRUB에 대한 커널 부팅 줄을 수정합니다. 이 단계를 수행하려면
/etc/default/grub
을 텍스트 편집기에서 열고GRUB_CMDLINE_LINUX_DEFAULT
변수를 찾거나 필요한 경우 추가하여 다음 매개 변수가 포함되도록 편집합니다.GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
이 파일을 저장하고 닫은 다음
sudo update-grub
을 실행합니다. 이 단계를 수행하면 모든 콘솔 메시지가 첫 번째 직렬 포트로 전송되어 Azure 기술 지원에서 디버깅 문제를 지원할 수 있습니다.SSH 서버가 설치되어 부팅 시 시작되도록 구성되어 있는지 확인합니다. 이 설정이 일반적으로 기본값입니다.
cloud-init
(프로비전 에이전트) 및 Azure Linux 에이전트(게스트 확장 처리기)를 설치합니다.Cloud-init
는netplan
을 사용하여 시스템 네트워크 구성(프로비전 및 각 후속 부팅 중)을 구성하고gdisk
를 사용하여 리소스 디스크를 분할합니다.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
참고 항목
walinuxagent
패키지는NetworkManager
및NetworkManager-gnome
패키지가 설치된 경우 이를 제거할 수 있습니다.Azure에서
cloud-init
프로비전과 충돌할 수 있는cloud-init
기본 구성 및 남은netplan
아티팩트를 제거합니다.sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yaml
Azure 데이터 원본을 사용하여 시스템을 프로비전하도록
cloud-init
를 구성합니다.cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg datasource_list: [ Azure ] EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg reporting: logging: type: log telemetry: type: hyperv EOF
프로비전을 수행하기 위해
cloud-init
를 사용하도록 Azure Linux 에이전트를 구성합니다. 이러한 옵션에 대한 자세한 내용은 WALinuxAgent 프로젝트를 참조하세요.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
cat <<EOF | sudo tee -a /etc/waagent.conf # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOF
cloud-init
및 Azure Linux 에이전트 런타임 아티팩트 및 로그를 정리합니다.sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log
VM 프로비전을 해제하고 Azure에서 프로비전할 수 있도록 준비합니다.
참고 항목
sudo waagent -force -deprovision+user
명령은 시스템을 정리하고 다시 프로비전하는 데 적합하도록 하여 이미지를 일반화합니다.+user
옵션은 마지막으로 프로비저닝된 사용자 계정 및 관련 데이터를 삭제합니다.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Warning
앞의 명령을 사용하여 프로비전을 해제한다고 해서 이미지에서 중요한 정보가 모두 지워지고 재배포에 적합하다는 보장은 없습니다.
Hyper-V 관리자에서 작업>종료를 선택합니다.
Azure는 고정 크기의 VHD만 허용합니다. VM의 OS 디스크가 고정 크기의 VHD가 아닌 경우
Convert-VHD
PowerShell cmdlet을 사용하여-VHDType Fixed
옵션을 지정합니다. 자세한 내용은 Convert-VHD에서Convert-VHD
에 대한 문서를 참조하세요.Azure에서 2세대 VM을 가져오려면 다음 단계를 수행합니다.
디렉터리를
boot EFI
디렉터리로 변경합니다.cd /boot/efi/EFI
ubuntu
디렉터리를boot
라는 새 디렉터리에 복사합니다.sudo cp -r ubuntu/ boot
디렉터리를 새로 만들어진 부팅 디렉터리로 변경합니다.
cd boot
shimx64.efi
파일 이름을 바꿉니다.sudo mv shimx64.efi bootx64.efi
grub.cfg
파일 이름을bootx64.cfg
로 바꿉니다.sudo mv grub.cfg bootx64.cfg
관련 콘텐츠
이제 Ubuntu Linux VHD를 사용하여 Azure에서 새 VM을 만들 준비가 되었습니다. .vhd 파일을 Azure에 처음 업로드하는 경우 사용자 지정 디스크에서 Linux VM 만들기를 참조하세요.