98 lines
No EOL
2 KiB
Markdown
98 lines
No EOL
2 KiB
Markdown
# Creating a New FreeBSD VM Guest on Ganeti
|
|
|
|
## Create the Guest VM
|
|
|
|
Use the silly script ~root/do-add
|
|
|
|
```
|
|
./do-add vm0 100 2 work0.psg.com
|
|
```
|
|
|
|
Which looks like
|
|
|
|
```
|
|
#!/bin/sh
|
|
|
|
# makeVM node diskGB ramGB nameFQDN
|
|
|
|
NODE=$1
|
|
DISK=$2
|
|
RAM=$3
|
|
NAME=$4
|
|
|
|
gnt-instance add \
|
|
-t plain \
|
|
-o noop \
|
|
-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}
|
|
```
|
|
|
|
## Start the Guest VM With the CD-ROM Mounted
|
|
|
|
You should get the latest and greatest ISO of the opsys you wish to install and put in in /ISOs on the node to which you are installing. And then
|
|
|
|
```
|
|
gnt-instance start -H boot_order=cdrom,cdrom_image_path=/ISOs/FreeBSD-10.0-STABLE-i386-20140712-r268571-disc1.iso work0.psg.com
|
|
```
|
|
|
|
## Find the Console Port of the Running VM
|
|
|
|
```
|
|
gnt-instance info work0.psg.com | grep console
|
|
```
|
|
|
|
Which will produce something similar to
|
|
|
|
```
|
|
console connection: vnc to vm1.sea.rg.net:11024 (display 5124)
|
|
serial_console: default (True)
|
|
```
|
|
|
|
You are interested in the 11024, not the 5124.
|
|
|
|
## Tunnel VNC over SSH
|
|
|
|
From your laptop
|
|
|
|
```
|
|
ssh -N -L 5900:127.0.0.1:<port from gnt-instance info> <vm node>
|
|
```
|
|
|
|
Of course you will need an account on the vm node
|
|
|
|
## 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 work0.psg.com
|
|
```
|
|
|
|
## 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
|
|
``` |