From aa96387184f78ad525035c9ceff7dab65578afea Mon Sep 17 00:00:00 2001 From: vallard Date: Thu, 7 May 2009 21:07:24 +0000 Subject: [PATCH] script to create hypervisor for KVM during post installation git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3314 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT/postscripts/mkhyperv | 138 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100755 xCAT/postscripts/mkhyperv diff --git a/xCAT/postscripts/mkhyperv b/xCAT/postscripts/mkhyperv new file mode 100755 index 000000000..456dd6a7a --- /dev/null +++ b/xCAT/postscripts/mkhyperv @@ -0,0 +1,138 @@ +#!/bin/sh +# this script is used to setup the hypervisor for KVM installations. +# In order for this to work, you have to do the following: +# +# 1. In your install template, make sure you add the following +# to your packages list : +# bridge-utils +# dnsmasq +# iscsi-initiator-utils +# kvm +# libvirt.x86_64 +# gpxe-kvm +# +# 2. In order to get those packaes, you'll need to add the +# xCAT-dep repo. For our test we added the line: +# repo --name=xcat-dep --baseurl=http://#TABLE:noderes:$NODE:nfsserver#/install/xcat/xcat-dep/rh5/#TABLE:nodetype:$NODE:arch# +# This line can be added after the url --url line +# +# Once you have that, then the following scripts just set up kvm +# When the machine boots the first time you'll know it works if you can +# run the command: +# virsh list +# You'll then see output like: +# Id Name State +#---------------------------------- + + + + +# configure network interfaces for bridging +# here we assume you are using eth0. Change it if it goes +# somewhere else. +HWETH0=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0` +HWETH1=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth1` +cat < /etc/sysconfig/network-scripts/ifcfg-eth0 +DEVICE=eth0 +TYPE=Ethernet +ONBOOT=yes +BRIDGE=br0 +PROMISC=yes +$HWETH0 +EOF +cat < /etc/sysconfig/network-scripts/ifcfg-eth1 +DEVICE=eth1 +TYPE=Ethernet +ONBOOT=no +BOOTPROTO=dhcp +$HWETH1 +EOF +cat < /etc/sysconfig/network-scripts/ifcfg-br0 +DEVICE=br0 +TYPE=Bridge +ONBOOT=yes +BOOTPROTO=dhcp +PEERDNS=yes +EOF + +#disabled networking code in init.d/kvm +rm -f /etc/libvirt/qemu/networks/*.xml +rm -f /etc/libvirt/qemu/networks/autostart/*.xml +chkconfig --add libvirtd + +#added runlevels to init.d/kvm - kvm needs to start before libvirt or the +#libvirt will not recognize kvm-ness is available and vm creation will fail. + +cat < /etc/init.d/kvm && chmod u+x /etc/init.d/kvm && chkconfig --add kvm +#!/bin/sh +# kvm init script - stripped off bridge code, but still 'Takes care +# +# description: The KVM is a kernel level Virtual Machine Monitor. +start () { + grep -q GenuineIntel /proc/cpuinfo && /sbin/modprobe kvm-intel + grep -q AuthenticAMD /proc/cpuinfo && /sbin/modprobe kvm-amd +} +stop () { + grep -q GenuineIntel /proc/cpuinfo && /sbin/modprobe -r kvm-intel + grep -q AuthenticAMD /proc/cpuinfo && /sbin/modprobe -r kvm-amd +} +case "\$1" in + start) + echo -n $"Starting KVM: " + start + echo + ;; + stop) + echo -n $"Shutting down KVM: " + stop + echo + ;; + status) + echo + ;; + *) + echo "Unknown command: \$1" >&2 + echo "Valid commands are: start, stop, status" >&2 + exit 1 +esac +EOF + + +# iscsi target init script +# you may not need this. Also, you'll have to set the iSCSI target +# leaving this command in shouldn't hurt anything if you don't have +# an iSCSI target + +ISCSITARGET=h0.cluster1 + +cat < /etc/init.d/iscsiconnect && chmod u+x +/etc/init.d/iscsiconnect && chkconfig --add iscsiconnect +#!/bin/sh +# +# chkconfig: 345 10 75 +# description: iscsi script to discover and connect to targets on boot +connect_targets() +{ + iscsiadm -m discovery -t st -p $ISCSITARGET + iscsiadm -m node -L automatic +} +disconnect_targets() +{ + iscsiadm -m node --logout +} +case "\$1" in + start) + connect_targets + ;; + stop) + disconnect_targets + ;; + status) + iscsiadm -m node + ;; + *) + echo "Unknown command: \$1" >&2 + echo "Valid commands are: start, stop, status" >&2 + exit 1 +esac +EOF