== How To Install Ganeti Clusters and Instances == === How To Install Ganeti Clusters === Suppose that you have two identical hosts running squeeze, foo.debian.org and bar.debian.org, that will be used as nodes in a ganeti cluster. ==== install required packages ==== On each node, install the required packages: {{{ apt-get install fai-client ssed extlinux apt-get install -t squeeze-backports drbd8-utils ganeti2 ganeti-instance-debootstrap ganeti-htools }}} ==== configure kernel modules ==== On each node, ensure that required kernel modules are loaded at boot: {{{ ainsl /etc/modules 'drbd minor_count=255 usermode_helper=/bin/true' ainsl /etc/modules 'hmac' ainsl /etc/modules 'tun' }}} ==== configure networking ==== Determine a hostname for the cluster (foobar.debian.org) and assign an A record. On each node, ensure that all nodes and the cluster itself are listed in {{{/etc/hosts}}}. On each node, create a bridge interface: br0. ==== create storage ==== On each node, configure lvm to ignore drbd devices and to prefer {{{/dev/cciss}}} devices names to {{{/dev/block}}} device names ([[http://code.google.com/p/ganeti/issues/detail?id=93|why?]]): {{{ ssed -i \ -e 's#^\(\s*filter\s\).*#\1= [ "a|.*|", "r|/dev/drbd[0-9]+|" ]#' -e 's#^\(\s*preferred_names\s\).*#\1= [ "^/dev/dm-*/", "^/dev/cciss/" ]#' \ /etc/lvm/lvm.conf }}} On each node, create a volume group: {{{ vgcreate vg_ganeti /dev/cciss/c0d0p3 }}} ==== create kvmU symbolic links ==== {{{ ln -s -T /boot/vmlinuz-2.6.32-5-amd64 /boot/vmlinuz-2.6-kvmU ln -s -T /boot/initrd.img-2.6.32-5-amd64 /boot/initrd.img-2.6-kvmU }}} ==== instantiate the cluster ==== On the master node (foo) only: {{{ gnt-cluster init \ --master-netdev br0 \ --vg-name vg_ganeti \ --secondary-ip 192.168.2.213 \ --enabled-hypervisors kvm \ --nic-parameters link=br0 \ --mac-prefix 00:16:37 \ --no-ssh-init \ --no-etc-hosts \ --hypervisor-parameters kvm:initrd_path=/boot/initrd.img-2.6-kvmU \ foobar.debian.org }}} ==== add slave nodes === For each slave node (bar), on the master node (foo): {{{ gnt-node add \ --secondary-ip 192.168.2.217 \ --no-ssh-key-check \ --no-node-setup \ bar.debian.org }}} ==== verify cluster ==== On the master node (foo): {{{ gnt-cluster verify }}} === How To Install Ganeti Instances === Suppose that the first guest on will be qux.debian.org. ==== define the instance ==== # add qux.debian.org entry in LDAP to establish A record # ask hosting partner to establish PTR record as appropriate # add qux.debian.org entry in puppet # add qux.debian.org entry in nagios ==== create the instance ==== On the master node (foo): {{{ gnt-instance add \ --node foo:bar \ --disk-template drbd \ --os-size 4GiB \ --os-type debootstrap+dsa \ --hypervisor-parameters kvm:initrd_path=,kernel_path= \ --net 0:ip=1.2.3.4 \ qux.debian.org }}}