rgnet-wiki/pages/NewVMonBKNIX.md
2020-07-04 15:21:45 -07:00

211 lines
No EOL
3.9 KiB
Markdown

# 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](https://wiki.rg.net/wiki/GuestNTP)
## 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
```