다음을 통해 공유


Azure용 Ubuntu 가상 머신 준비

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

Ubuntu는 이제 Ubuntu 클라우드 이미지 웹 페이지에서 다운로드할 수 있는 공식 Azure VHD(가상 하드 디스크)를 게시합니다. 다음 수동 절차를 사용하는 대신 Azure용 특수 Ubuntu 이미지를 직접 빌드해야 하는 경우 알려진 작동 VHD로 시작하고 필요에 따라 사용자 지정합니다. 다음 위치에서 항상 최신 이미지 릴리스를 찾을 수 있습니다.

필수 조건

이 문서에서는 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 클라우드 이미지 웹 페이지에서 미리 빌드되고 테스트된 이미지를 사용하는 것이 좋습니다.

  1. Hyper-V 관리자의 가운데 창에서 VM을 선택합니다.

  2. 연결을 선택하여 VM 창을 엽니다.

  3. 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
    
  4. 이제 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
    
  5. 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"
    
  6. 이 파일을 저장하고 닫은 다음 sudo update-grub을 실행합니다. 이 단계를 수행하면 모든 콘솔 메시지가 첫 번째 직렬 포트로 전송되어 Azure 기술 지원에서 디버깅 문제를 지원할 수 있습니다.

  7. SSH 서버가 설치되어 부팅 시 시작되도록 구성되어 있는지 확인합니다. 이 설정이 일반적으로 기본값입니다.

  8. cloud-init(프로비전 에이전트) 및 Azure Linux 에이전트(게스트 확장 처리기)를 설치합니다. Cloud-initnetplan을 사용하여 시스템 네트워크 구성(프로비전 및 각 후속 부팅 중)을 구성하고 gdisk를 사용하여 리소스 디스크를 분할합니다.

    sudo apt update
    sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
    

    참고 항목

    walinuxagent 패키지는 NetworkManagerNetworkManager-gnome 패키지가 설치된 경우 이를 제거할 수 있습니다.

  9. 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
    
  10. 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
    
  11. 프로비전을 수행하기 위해 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
    
  12. 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
    
  13. VM 프로비전을 해제하고 Azure에서 프로비전할 수 있도록 준비합니다.

    참고 항목

    sudo waagent -force -deprovision+user 명령은 시스템을 정리하고 다시 프로비전하는 데 적합하도록 하여 이미지를 일반화합니다. +user 옵션은 마지막으로 프로비저닝된 사용자 계정 및 관련 데이터를 삭제합니다.

    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    

    Warning

    앞의 명령을 사용하여 프로비전을 해제한다고 해서 이미지에서 중요한 정보가 모두 지워지고 재배포에 적합하다는 보장은 없습니다.

  14. Hyper-V 관리자에서 작업>종료를 선택합니다.

  15. Azure는 고정 크기의 VHD만 허용합니다. VM의 OS 디스크가 고정 크기의 VHD가 아닌 경우 Convert-VHD PowerShell cmdlet을 사용하여 -VHDType Fixed 옵션을 지정합니다. 자세한 내용은 Convert-VHD에서 Convert-VHD에 대한 문서를 참조하세요.

  16. Azure에서 2세대 VM을 가져오려면 다음 단계를 수행합니다.

    1. 디렉터리를 boot EFI 디렉터리로 변경합니다.

      cd /boot/efi/EFI
      
    2. ubuntu 디렉터리를 boot라는 새 디렉터리에 복사합니다.

      sudo cp -r ubuntu/ boot
      
    3. 디렉터리를 새로 만들어진 부팅 디렉터리로 변경합니다.

      cd boot
      
    4. shimx64.efi 파일 이름을 바꿉니다.

      sudo mv shimx64.efi bootx64.efi
      
    5. grub.cfg 파일 이름을 bootx64.cfg로 바꿉니다.

      sudo mv grub.cfg bootx64.cfg
      

이제 Ubuntu Linux VHD를 사용하여 Azure에서 새 VM을 만들 준비가 되었습니다. .vhd 파일을 Azure에 처음 업로드하는 경우 사용자 지정 디스크에서 Linux VM 만들기를 참조하세요.