Como inicializo imagens do Ubuntu Cloud no vmware?

5

Eu quero rodar uma imagem de nuvem do Ubuntu no VMWare.

Eu só preciso saber como definir as propriedades OVF de uma forma que o VMWare entenda para passar parâmetros para o cloud-init.

O que eu fiz

Instale o VMWare Player 4.0.4, usando o vmware workstation 8.0.2 / player 4.0.2 correção para linux 3.2+ patch para contornar a falha de compilação para módulo ethernet virtual.

Faça o download precise-server-cloudimg-amd64.ovf , e também o arquivo precise-server-cloudimg-amd64.img (formato QCOW2 compactado, 220MB)

Converta a imagem de QCOW2 em VMDK:

qemu-img convert -O vmdk precise-server-cloudimg-amd64-disk1.img disk.vmdk

Edite o elemento OVF <File> para alterar o ovf: href e ovf: size para corresponder à saída do qemu-img:

<File ovf:href="disk.vmdk" ovf:id="file1" ovf:size="689569792"/> 

Edite o elemento <Disk> para definir o formato VMDK esparso e a capacidade desejada em bytes (8 GB aqui):

<Disk ovf:capacity="8589934592" ovf:diskId="vmdisk1" ovf:fileRef="file1" 
ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#sparse"/>

Remova todos os elementos <Property> porque o vmplayer não os reconhece.

Configure a seção VirtualHardwareSection para definir CPU e RAM a gosto.

Execute o OVF no vmplayer ou converta-o em vmx e execute o vmx:

ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx

Infelizmente, não consigo logar como "ubuntu" no prompt porque as propriedades OVF não foram fornecidas para o cloud-init. Como devo fazer isso?

    
por Graham 20.06.2012 / 11:16

3 respostas

3

Esta resposta é baseada no NoCloud LEIA-ME do CloudInit e dá-lhe cloud-init no player VMWare.

Crie o arquivo "meta-data", usando "localhost" como um nome de host garantido para resolver, a fim de evitar timeouts de DNS que fazem com que o sudo tome idades em um ambiente de hipervisor local:

local-hostname: localhost

Crie o arquivo "user-data" para as informações de CloudInit . Este define a senha para o Ubuntu, e pede-me para alterá-lo no primeiro login:

#cloud-config
password: ubuntu

Gere seed.iso desses arquivos:

genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

Anexe "seed.iso" à VM antes da primeira inicialização (configure-a para conectar no início), e quando o grub aparecer, adicione também este parâmetro do kernel para a primeira inicialização:

ds=nocloud-net

A máquina inicializará e se configurará. Para inicializações futuras, precisamos editar a edição /etc/default/grub e executar sudo update-grub para informar que não estamos no EC2 (nenhum serviço de metadados na nuvem):

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 ds=nocloud"
    
por Graham 15.07.2014 / 06:37
0

Eu encontrei uma maneira de fazer o Ubuntu Cloud Images inicializável, e coloque minha resposta

Aqui está a essência:

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

O resultado é basicamente um disco rígido inicializável. Você pode converter isso usando qualquer ferramenta disponível para se adequar à sua virtualização, e (como você pode ver no APPEND root=/dev/sda ) as coisas podem precisar de ajustes dependendo do seu hardware virtual (scsi ou ide ou sata) ...

    
por mogsie 27.06.2012 / 09:41
0

Esta resposta refere-se ao pangolim preciso, e descreve uma maneira de resolver este problema sem recorrer a uma imagem de CD (que eu não consegui trabalhar usando o VMware ESX).

Parece que o Ubuntu Cloud Images agora contém um setor de inicialização (algo que não me lembro de terem feito antes). Se você converter a imagem para vmdk usando qemu-img e limpar o OVF conforme descrito, você pode, de fato, inicializá-la no grub sem mais delongas. O Grub tem um tempo limite padrão de 5 segundos, portanto, você deve ser capaz de e dos parâmetros de inicialização na primeira inicialização a incluir:

init=/usr/lib/cloud-init/uncloud-init ubuntu-pass=ubuntu ds=nocloud-net console=tty0

Isso imprimirá tudo em tty0, definirá a senha do ubuntu para algo conhecido e forçará a inicialização do "uncloud". e permitirá que você faça o login com as credenciais fornecidas. Note que a linha de comando é visível para qualquer pessoa que efetua login ( cat /proc/cmdline ), portanto você deve alterar a configuração do grub após a primeira inicialização (veja abaixo) e reinicializar.

Eu tive sucesso com essa técnica usando o VMware ESX com apenas o vncviewer instalado localmente; Nenhuma ferramenta VMware diferente de ovftool usada para carregar o ovf para o ESX. Presumivelmente, a mesma técnica funcionará com um VMware Player.

Para tornar as coisas mais permanentes, modifique /etc/default/grub e defina add ds = nocloud-net para a linha de comando novamente para evitar que o cloud-init faça mais alterações em sua imagem. Execute update-grub para depois colocá-lo e reiniciá-lo.

    
por mogsie 19.08.2013 / 16:35