Creating a New VM Guest on the BKNIX Ganeti Cluster

Install Image Types

Install the noop image type on all nodes in the cluster

echo 'deb wheezy main' > /etc/apt/sources.list.d/grnet.list
wget -O - | apt-key add -
apt-get update
apt-get install ganeti-os-noop

Now you can create instances a la

gnt-instance add -t plain -o noop

Create the VM

As I am lazy, I have a script to create a new VM guest

do-add nodeNum diskGB ramGB nameFQDN

This is the script as it is in vm0:~root


# do-add nodeNum diskGB ramGB nameFQDN


gnt-instance add \
     -t plain \
     -o image+default \
     -s ${DISK}G \
     -B maxmem=${RAM}G,minmem=$((${RAM}/2))G \
     -n $NODE \
     -H kvm:vnc_bind_address= \
     --no-install \
     --no-start \
     --no-ip-check \
     --no-name-check \

If You are Lazy and Just Want to Copy the Prototype

Find the image of the source and target images

gnt-instance info | grep 'on prim'
gnt-instance info | grep 'on prim'
dd bs=1024k if=/dev/ganeti/f95c22fc-8061-4402-b276-193875fc6561.disk0 | ssh dd of=/dev/ganeti/b295c26a-04a9-46be-a4b9-a5febfd29195.disk0

You can then start your VM

gnt-instance start

Start a console

gnt-instance console

Configure the Network to the Correct IP, Gateway etc.

e /etc/network/interfaces

Fix the hostname

echo "" > /etc/hostname
hostname `cat /etc/hostname`

Reconfigure the mail system for the hostname and the correct IP address

dpkg-reconfigure exim4-config

Fix grub for something I forgot <blush?

e /etc/default/grub

Enable serial console

e /etc/inittab
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

Make new ssh keys

rm sudo rm -rf /etc/ssh/ssh_host_*
ssh-keygen -A
service ssh restart

Fix the timezone

dpkg-reconfigure tzdata

If you have reconfigured networking to be on the public LAN, then you need to bind the NIC to the public LAN with

gnt-instance modify --net 0:modify,link=br-public

Restart the server from ganeti

gnt-instance reboot foo.bknix.coth

If you want to build from CD-ROM

Start the Guest VM With the CD-ROM Mounted ==

gnt-instance start -H boot_order=cdrom,cdrom_image_path=/ISOs/debian-7.6.0-i386-netinst.iso <your VM name>

Find the Console Port of the Running VM

gnt-instance info | grep console

Tunnel VNC over SSH

From your laptop

ssh -N -L 5900:<port from gnt-instance info>

I use a hack

do-link vnc 11024

Run VNC to the Guest VM

From your laptop, use a VNC client to connect to localhost, display 0, password as set for the VM host.

Do the Install

It should have booted the CD-ROM. Now do the install of the OpSys in your usual fashion.

When it finishes, if you just let it reboot, it will likely just boot the CD-ROM again. So restart the guest by

gnt-instance reboot

Enable Serial Console

It is also smart to enable the serial console in the guest so that the Ganeti host is able to

gnt-instance console

In FreeBSD, the hack is in /etc/ttys and the baud rate makes no difference.

ttyu0   "/usr/libexec/getty std.9600"   vt100   on  secure

Install NTP

Install !NTP in the guest

DRBD Mirror Guest to Cluster

You will likely want the reliability of mirroring the guest to another node in the cluster. I have a script I use

# do-drbd guest-name to-node
gnt-instance shutdown $1
gnt-instance modify \
    -t drbd \
    --no-wait-for-sync \
    -n $2 \
gnt-instance start $1
Last modified 5 years ago Last modified on Feb 12, 2015, 8:22:23 AM