適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
Ubuntu には、Azure での正常なプロビジョニングに必要なすべてのコンポーネント ( cloud-init、Azure 最適化カーネル、Azure ゲスト エージェントの互換性、仮想化環境のパフォーマンスチューニングされた既定値など) が含まれる公式の Azure 対応クラウド イメージ (cloudimg) が用意されています。 これらのイメージは、Azure VM のプロビジョニング要件に合わせ、必要な手動構成手順を減らすので、カスタム VHD を作成する際の開始点として推奨されます。
Ubuntu は、 https://cloud-images.ubuntu.com/ Web サイトで、すぐに使用できる Azure 仮想ハード ディスク (VHD) を含む複数の形式でこれらのイメージを発行します。 Azure 用の特殊な Ubuntu イメージを構築する必要がある場合は、これらの検証済み VHD ビルドから開始し、必要に応じてカスタマイズできます。 最新のイメージ リリースは、次の場所で入手できます。
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 24.04/Noble: noble-server-cloudimg-amd64-azure.vhd.tar.gz
前提条件
この記事では、Ubuntu Linux オペレーティング システム (OS) を VHD に既にインストールしていることを前提にしています。 .vhd ファイルを作成するツールはいくつかあります。 たとえば、Hyper-V などの仮想化ソリューションなどです。 詳細については、「Hyper-V の役割のインストールと仮想マシン (VM) の構成」をご覧ください。
Ubuntu のインストールに関する注記
- Azure 用に Linux を準備する場合のその他のヒントについては、「Linux のインストールに関する一般的な注記」を参照してください。
- VHDX 形式は Azure ではサポートされていません。サポートされるのは固定 VHD のみです。 Hyper-V マネージャーまたは
Convert-VHDコマンドレットを使用して、ディスクを VHD 形式に変換できます。 - Linux システムをインストールする場合は、Logical Volume Manager (LVM) (通常、多くのインストールで既定) ではなく標準パーティションを使用することをお勧めします。 これらの標準パーティションを使うと、特に OS ディスクをトラブルシューティングのために別の VM に接続する必要がある場合に、LVM 名と、複製された VM との競合が回避されます。 LVM や RAID もデータ ディスクで使用できます。
- OS ディスクにスワップ パーティションまたはスワップ ファイルを構成しないでください。
cloud-initプロビジョニング エージェントを構成して、一時リソース ディスク上にスワップ ファイルまたはスワップ パーティションを作成できます。 このプロセスの詳細については、「 Azure Linux VM の SWAP パーティションを作成する」を参照してください。 - Azure の VHD の仮想サイズはすべて、1 MB にアラインメントさせる必要があります。 未フォーマット ディスクから VHD に変換するときに、変換する前の未フォーマット ディスクのサイズが 1 MB の倍数であることを確認する必要があります。 詳細については、「Linux のインストールに関する注記」をご覧ください。
事前構築済みの Ubuntu イメージを Azure に直接アップロードし、結果の VHD を使用して新しい仮想マシンを作成できます。
.vhd ファイルを初めてアップロードする場合は、「カスタム ディスクから Linux VM を作成する」を参照してください。
手動の手順
Note
Azure 用のカスタム Ubuntu イメージを独自に作成する前に、Ubuntu Cloud Images web ページにある構築およびテスト済みのイメージを使用することを検討してください。
Windows を使用して事前構築済みのイメージを抽出する場合は、Windows WSL を使用して次のコマンドを実行してください
sudo tar --sparse -xvzf <image name>-azure.vhd.tar.gz
Hyper-V マネージャーの中央のウィンドウで VM を選択します。
[接続] を選択すると、VM のコンソール ウィンドウが開きます。
イメージ内の現在のリポジトリを置き換えて、Ubuntu の Azure リポジトリを使用します。
/etc/apt/sources.list/etc/apt/sources.list.d/ubuntu.sourcesを編集する前に、バックアップを作成することをお勧めします。Ubuntu 22.04 以前の場合
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakUbuntu 24.04 以降の場合
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bakUbuntu 22.04 以前の場合
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 updateUbuntu 24.04 以降の場合
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list.d/ubuntu.sources sudo apt updateUbuntu Azure イメージでは、Azure-Tailored Kernels 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 rebootGRUB のカーネルのブート行を変更して Azure の追加のカーネル パラメーターを含めます。 個のステップを行うには、テキスト エディターで
/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 walinuxagentNote
NetworkManagerパッケージおよびNetworkManager-gnomeパッケージがインストールされている場合、walinuxagentパッケージによってこれらのパッケージが削除される場合があります。cloud-initの既定の構成を削除し、Azure でのcloud-initプロビジョニングと競合する可能性がある残りのnetplanアーティファクト: Ubuntu 22.04 以前の場合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/*.yamlUbuntu 24.04 以降の場合
sudo rm -f /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/*.yamlAzure データ ソースを使用してシステムをプロビジョニングするように
cloud-initを構成します。sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg <<EOF datasource_list: [ Azure ] EOF sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg <<EOF 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 sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg <<EOF reporting: logging: type: log telemetry: type: hyperv EOFAzure Linux エージェントを構成して、プロビジョニングを実行するために
cloud-initに依存するようにします。 これらのオプションの詳細については、「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.confsudo tee -a /etc/waagent.conf <<EOF # 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 EOFcloud-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.logVM をプロビジョニング解除し、Azure でのプロビジョニング用に準備します。
Note
sudo waagent -force -deprovision+userコマンドでは、システムをクリーンアップし、再プロビジョニングに適した状態にすることで、イメージを一般化します。+userオプションを指定すると、前回プロビジョニングされたユーザー アカウントおよび関連付けられたデータも削除されます。sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history警告
先程のコマンドを使用したプロビジョニング解除により、イメージからすべての機密情報が削除され、イメージが再配布に適した状態になることが保証されるわけではありません。
Hyper-V マネージャーで [アクション]>[シャットダウン] の順に選択します。
Azure では、固定サイズの VHD のみが許容されます。 VM の OS ディスクが固定サイズの VHD でない場合は、
Convert-VHDPowerShell コマンドレットを使用して-VHDType Fixedオプションを指定します。 詳細については、Convert-VHD のConvert-VHDのドキュメントを参照してください。第 2 世代 VM を Azure で利用するには、次の手順のようにします。
ディレクトリを
boot EFIディレクトリに変更します。cd /boot/efi/EFIubuntuディレクトリをbootという新しいディレクトリにコピーします。sudo cp -r ubuntu/ boot新しく作成したブート ディレクトリにディレクトリを変更します。
cd bootshimx64.efiファイルの名前を変更します。sudo mv shimx64.efi bootx64.efigrub.cfgファイルの名前をbootx64.cfgに変更します。sudo mv grub.cfg bootx64.cfg
関連コンテンツ
これで、Ubuntu Linux VHD を使用して Azure に新しい VM を作成する準備ができました。 .vhd ファイルを Azure に初めてアップロードする場合は、「Create a Linux VM from a custom disk (カスタム ディスクから Linux VM を作成する)」を参照してください。