VMWare上でUbuntuクラウドイメージを実行したい。
Cloud-initにパラメーターを渡すために、VMWareが理解できる方法でOVFプロパティを設定する方法を知る必要があります。
vmware workstation 8.0.2/player 4.0.2 fix for linux 3.2+ patch を使用してVMWare Player 4.0.4をインストールし、仮想イーサネットモジュールのコンパイルエラーを回避します。
precise-server-cloudimg-AMD64.ovf 、およびprecision-server-cloudimg-AMD64.imgファイル(圧縮QCOW2形式、220MB)もダウンロードします
イメージをQCOW2からVMDKに変換します。
qemu-img convert -O vmdk precise-server-cloudimg-AMD64-disk1.img disk.vmdk
OVF <File>
要素を編集して、ove:hrefおよびovf:sizeを変更し、qemu-imgの出力に一致させます。
<File ovf:href="disk.vmdk" ovf:id="file1" ovf:size="689569792"/>
<Disk>
要素を編集して、スパースVMDK形式と必要な容量をバイト単位(ここでは8GB)に設定します。
<Disk ovf:capacity="8589934592" ovf:diskId="vmdisk1" ovf:fileRef="file1"
ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#sparse"/>
Vmplayerはそれらを認識しないため、すべての<Property>
要素を削除します。
VirtualHardwareSectionセクションを構成して、CPUとRAMを好みに設定します。
VmplayerでOVFを実行するか、vmxに変換してvmxを実行します。
ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx
残念ながら、OVFプロパティがcloud-initに提供されていないため、プロンプトで「ubuntu」としてログインできません。どうすればいいですか?
この回答は、CloudInitの NoCloud README に基づいており、VMWareプレーヤーでcloud-initを提供します。
解決が保証されたホスト名として「localhost」を使用して「meta-data」ファイルを作成し、ローカルハイパーバイザー環境でSudoが古くなるDNSタイムアウトを回避します。
local-hostname: localhost
CloudInit infoのファイル「user-data」ファイルを作成します。これはパスワードをubuntuに設定し、最初のログイン時にパスワードを変更するように要求します:
#cloud-config
password: ubuntu
これらのファイルからseed.isoを生成します。
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
最初の起動前に「seed.iso」をVMにアタッチし(起動時に接続するように設定します)、grubが表示されたら、最初の起動用に次のカーネルパラメーターも追加します。
ds=nocloud-net
マシンが起動し、自動的に構成されます。将来のブートでは、edit /etc/default/grub
を編集し、Sudo update-grub
を実行してEC2にないことを通知する必要があります(クラウドメタデータサービスなし):
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 ds=nocloud"
Ubuntu Cloud Imagesを起動可能にする方法を見つけ、 my answer
その要点は次のとおりです。
mount -o loop cloud-image.img /mnt/image
extlinux --install /mnt/image/
echo "DEFAULT /vmlinuz" > /mnt/image/extlinux.conf
echo "APPEND root=/dev/sda init=/usr/lib/cloud-init/uncloud-init" \
"ubuntu-pass=ubuntu ds=nocloud" >> /mnt/image/extlinux.conf
umount /mnt/image
結果は、基本的に起動可能なハードディスクです。これは、仮想化に合わせて使用可能なツールを使用して変換できます(APPEND root=/dev/sda
を見るとわかるように)、仮想ハードウェアの種類(scsi、ide、sata)に応じて調整が必要になる場合があります...
この回答は正確なセンザンコウに関するものであり、CDイメージに頼らずにこの問題を解決する方法について説明しています(VMware ESXを使用して作業することができませんでした)。
現在、Ubuntu Cloud Imagesにはブートセクターが含まれているようです(以前に思い出したことはありません)。 qemu-img
を使用してイメージをvmdkに変換し、説明どおりにOVFをクリーンアップすると、実際にそれ以上起動せずにgrubで起動できます。 Grubにはデフォルトで5秒のタイムアウトがあるため、最初のブート時にブートパラメーターにe
ditを含めることができるはずです。
init=/usr/lib/cloud-init/uncloud-init ubuntu-pass=ubuntu ds=nocloud-net console=tty0
これにより、すべてがtty0に出力され、ubuntuパスワードが既知のものに設定され、「クラウド解除」初期化が強制されます。提供された資格情報でログインできるようになります。コマンドラインは(cat /proc/cmdline
)にログインするすべてのユーザーに表示されるため、最初のブート(以下を参照)および再起動後にgrub構成を変更する必要があります。
ローカルにインストールされたvncviewerのみでVMware ESXを使用して、この手法で成功しました。 ESXにovfをアップロードするために使用されるovftool以外のVMwareツールはありません。おそらく、VMware Playerでも同じ手法が機能します。
より永続的にするには、/etc/default/grub
を変更し、コマンドラインにds = nocloud-netを再度追加して、cloud-initがイメージにさらに変更を加えないようにします。 update-grub
を実行して、それを固定して再起動します。