3.9 KiB
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
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