wiki:NewVMonBKNIX

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 http://repo.noc.grnet.gr/ wheezy main' > /etc/apt/sources.list.d/grnet.list
wget -O - http://repo.noc.grnet.gr/grnet.gpg.key | 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

#!/bin/sh

# do-add nodeNum diskGB ramGB nameFQDN

DISK=$2
RAM=$3
NAME=$4
NODE=vm$1.bknix.co.th

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=0.0.0.0 \
     --no-install \
     --no-start \
     --no-ip-check \
     --no-name-check \
     ${NAME}

If You are Lazy and Just Want to Copy the Prototype

Find the image of the source and target images

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

You can then start your VM

gnt-instance start your.vm.name

Start a console

gnt-instance console your.vm.name

Configure the Network to the Correct IP, Gateway etc.

e /etc/network/interfaces

Fix the hostname

echo "foo.bknix.co.th" > /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
quiet
update-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 your.vm.name

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 your.vm.name | grep console

Tunnel VNC over SSH

From your laptop

ssh -N -L 5900:127.0.0.1:<port from gnt-instance info> your.vm.name

I use a hack

do-link vnc vm0.bknix.co.th 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 your.vm.name

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 your.vm.name

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

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