web-dev-qa-db-ja.com

VMwareでUbuntu Cloudイメージを起動するにはどうすればよいですか?

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」としてログインできません。どうすればいいですか?

6
Graham

この回答は、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"
3
Graham

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)に応じて調整が必要になる場合があります...

0
mogsie

この回答は正確なセンザンコウに関するものであり、CDイメージに頼らずにこの問題を解決する方法について説明しています(VMware ESXを使用して作業することができませんでした)。

現在、Ubuntu Cloud Imagesにはブートセクターが含まれているようです(以前に思い出したことはありません)。 qemu-imgを使用してイメージをvmdkに変換し、説明どおりにOVFをクリーンアップすると、実際にそれ以上起動せずにgrubで起動できます。 Grubにはデフォルトで5秒のタイムアウトがあるため、最初のブート時にブートパラメーターにeditを含めることができるはずです。

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を実行して、それを固定して再起動します。

0
mogsie