#!/bin/sh # cloudmin-kvm-debian-install.sh # Copyright 2005-2011 Virtualmin, Inc. # # Installs Cloudmin GPL for KVM and all dependencies on a Debian or Ubuntu # system. VER=1.1 # Define functions yesno () { while read line; do case $line in y|Y|Yes|YES|yes|yES|yEs|YeS|yeS) return 0 ;; n|N|No|NO|no|nO) return 1 ;; *) printf "\nPlease enter y or n: " ;; esac done } # Show help page if [ "$1" = "--help" ]; then echo $0 [--qemu] [--no-bridge | --bridge-interface ethN] exit 0 fi # Ask the user first cat </etc/apt/sources.list.clean mv /etc/apt/sources.list.clean /etc/apt/sources.list # Check for KVM-capable CPU if [ "$qemu" != 1 ]; then echo Checking for hardware support for KVM .. grep -e vmx -e svm /proc/cpuinfo >/dev/null if [ $? != 0 ]; then echo .. not found. Make sure your CPU has Intel VT-x or AMD-V support echo "" exit 1 fi echo .. found OK echo "" fi # Check for apt-get echo Checking for apt-get .. if [ ! -x /usr/bin/apt-get ]; then echo .. not installed. The Cloudmin installer requires APT to download packages echo "" exit 1 fi echo .. found OK echo "" # Make sure we have wget echo "Installing wget .." apt-get -y install wget echo ".. done" echo "" # Check for wget or curl echo "Checking for curl or wget..." if [ -x "/usr/bin/curl" ]; then download="/usr/bin/curl -s " elif [ -x "/usr/bin/wget" ]; then download="/usr/bin/wget -nv -O -" else echo "No web download program available: Please install curl or wget" echo "and try again." exit 1 fi echo "found $download" echo "" # Create Cloudmin licence file echo Creating Cloudmin licence file cat >/etc/server-manager-license </tmp/RPM-GPG-KEY-virtualmin if [ "$?" != 0 ]; then echo .. download failed exit 1 fi $download "http://software.virtualmin.com/lib/RPM-GPG-KEY-webmin" >/tmp/RPM-GPG-KEY-webmin if [ "$?" != 0 ]; then echo .. download failed exit 1 fi echo .. done echo "" # Import keys echo Importing GPG keys .. apt-key add /tmp/RPM-GPG-KEY-virtualmin && apt-key add /tmp/RPM-GPG-KEY-webmin echo .. done echo "" # Setup the APT sources file echo Creating APT repository for Cloudmin packages .. cat >>/etc/apt/sources.list </dev/null if [ "$?" != 0 ]; then echo .. kernel module did not load successfully exit 1 fi sleep 5 if [ ! -e /dev/kvm ]; then echo .. KVM device file /dev/kvm is missing exit 1 fi echo .. done echo "" fi # Create loop devices if missing echo Creating /dev/loop devices .. for loop in 0 1 2 3 4 5 6 7; do if [ ! -r "/dev/loop$loop" ]; then mknod "/dev/loop$loop" b 7 $loop fi done echo .. done echo "" # APT install webmin, theme and Cloudmin echo Installing Cloudmin packages using APT .. apt-get -y install webmin apt-get -y install webmin-server-manager webmin-virtual-server-theme if [ "$?" != 0 ]; then echo .. install failed exit 1 fi mkdir -p /xen echo .. done echo "" # Configure Webmin to use theme echo Configuring Webmin .. grep -v "^preroot=" /etc/webmin/miniserv.conf >/tmp/miniserv.conf.$$ echo preroot=authentic-theme >>/tmp/miniserv.conf.$$ cat /tmp/miniserv.conf.$$ >/etc/webmin/miniserv.conf rm -f /tmp/miniserv.conf.$$ grep -v "^theme=" /etc/webmin/config >/tmp/config.$$ echo theme=authentic-theme >>/tmp/config.$$ cat /tmp/config.$$ >/etc/webmin/config rm -f /tmp/config.$$ /etc/webmin/restart echo .. done echo "" # Setup BIND zone for virtual systems basezone=`hostname -d` if [ "$basezone" = "" ]; then basezone=example.com fi zone="cloudmin.$basezone" echo Creating DNS zone $zone .. /usr/share/webmin/server-manager/setup-bind-zone.pl --zone $zone --auto-view if [ "$?" != 0 ]; then echo .. failed else echo kvm_zone=$zone >>/etc/webmin/server-manager/config echo kvm_zone=$zone >>/etc/webmin/server-manager/this echo .. done fi echo "" # Set Qemu mode flag if [ "$qemu" = 1 ]; then echo kvm_qemu=1 >>/etc/webmin/server-manager/config fi # Enable bridge if [ "$nobridge" = "" ]; then echo Creating network bridge .. /usr/share/webmin/server-manager/setup-kvm-bridge.pl $interface brex=$? if [ "$brex" = 0 ]; then echo .. already configured else if [ "$brex" = 1 ]; then echo .. done else echo .. bridge creation failed fi fi echo "" fi # Open Webmin firewall port echo Opening port 10000 on host firewall .. /usr/share/webmin/firewall/open-ports.pl 10000 10001 10002 10003 10004 10005 843 if [ "$?" != 0 ]; then echo .. failed else echo .. done fi echo "" # Tell user about need to reboot hostname=`hostname` if [ "$brex" = 1 ]; then echo Cloudmin GPL has been successfully installed. However, you will echo need to reboot to activate the network bridge before any KVM echo instances can be created. echo echo One this is done, you can login to Cloudmin at : echo https://$hostname:10000/ else echo Cloudmin GPL has been successfully installed. echo echo You can login to Cloudmin at : echo https://$hostname:10000/ fi # All done!