mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			179 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# Licensed to the Apache Software Foundation (ASF) under one
 | 
						|
# or more contributor license agreements.  See the NOTICE file
 | 
						|
# distributed with this work for additional information
 | 
						|
# regarding copyright ownership.  The ASF licenses this file
 | 
						|
# to you under the Apache License, Version 2.0 (the
 | 
						|
# "License"); you may not use this file except in compliance
 | 
						|
# with the License.  You may obtain a copy of the License at
 | 
						|
#
 | 
						|
#   http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
#
 | 
						|
# Unless required by applicable law or agreed to in writing,
 | 
						|
# software distributed under the License is distributed on an
 | 
						|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
						|
# KIND, either express or implied.  See the License for the
 | 
						|
# specific language governing permissions and limitations
 | 
						|
# under the License.
 | 
						|
 | 
						|
function cleanup() {
 | 
						|
    rm -f /etc/yum.repos.d/cloud-temp.repo || true
 | 
						|
}
 | 
						|
 | 
						|
function setuprepo() {
 | 
						|
    pathtorepo=`pwd`
 | 
						|
    echo "Setting up the temporary repository..." >&2
 | 
						|
    echo \
 | 
						|
"[cloud-temp]
 | 
						|
baseurl=file://$pathtorepo
 | 
						|
gpgcheck=0
 | 
						|
enabled=1
 | 
						|
name=CloudStack temporary repository
 | 
						|
" > /etc/yum.repos.d/cloud-temp.repo
 | 
						|
 | 
						|
    echo "Cleaning Yum cache..." >&2
 | 
						|
    rm /var/cache/yum/cloud-temp/ -rf
 | 
						|
    yum clean expire-cache || true
 | 
						|
}
 | 
						|
 | 
						|
function installed() {
 | 
						|
    rpm -q "$@" > /dev/null 2>&1 || return $?
 | 
						|
}
 | 
						|
 | 
						|
function doinstall() {
 | 
						|
    yum install "$@" || return $?
 | 
						|
}
 | 
						|
 | 
						|
function doupdate() {
 | 
						|
    yum update --enablerepo='cloud-temp' 'cloud-*' || return $?
 | 
						|
    rpm -Uvh --force cloud-scripts-*.rpm
 | 
						|
}
 | 
						|
 | 
						|
function doremove() {
 | 
						|
    yum remove "$@" || return $?
 | 
						|
}
 | 
						|
 | 
						|
[ `whoami` != 'root' ] && echo "This script must run as root" && exit 1
 | 
						|
 | 
						|
trap "cleanup" INT TERM EXIT
 | 
						|
 | 
						|
cd `dirname "$0"`
 | 
						|
setuprepo
 | 
						|
 | 
						|
installms="    M) Install the Management Server
 | 
						|
"
 | 
						|
installag="    A) Install the Agent
 | 
						|
"
 | 
						|
installbm="    B) Install BareMetal Agent
 | 
						|
"
 | 
						|
installus="    S) Install the Usage Monitor
 | 
						|
"
 | 
						|
installdb="    D) Install the database server
 | 
						|
"
 | 
						|
quitoptio="    Q) Quit
 | 
						|
"
 | 
						|
unset removedb
 | 
						|
unset upgrade
 | 
						|
unset remove
 | 
						|
 | 
						|
if installed cloud-client || installed cloud-agent || installed cloud-usage || installed cloud-baremetal-agent; then
 | 
						|
    upgrade="    U) Upgrade the CloudStack packages installed on this computer
 | 
						|
"
 | 
						|
    remove="    R) Stop any running CloudStack services and remove the CloudStack packages from this computer
 | 
						|
"
 | 
						|
fi
 | 
						|
if installed cloud-client ; then
 | 
						|
    unset installms
 | 
						|
fi
 | 
						|
if installed cloud-agent ; then
 | 
						|
    unset installag
 | 
						|
fi
 | 
						|
if installed cloud-baremetal-agent ; then
 | 
						|
    unset installbm
 | 
						|
fi
 | 
						|
if installed cloud-usage ; then
 | 
						|
    unset installus
 | 
						|
fi
 | 
						|
if installed mysql-server ; then
 | 
						|
    unset installdb
 | 
						|
    removedb="    E) Remove the MySQL server (will not remove the MySQL databases)
 | 
						|
"
 | 
						|
fi
 | 
						|
 | 
						|
read -p "Welcome to the Apache CloudStack (Incubating) Installer.  What would you like to do?
 | 
						|
 | 
						|
$installms$installag$installbm$installus$installdb$upgrade$remove$removedb$quitoptio
 | 
						|
    > " installtype
 | 
						|
 | 
						|
if [ "$installtype" == "q" -o "$installtype" == "Q" ] ; then
 | 
						|
 | 
						|
    true
 | 
						|
 | 
						|
elif [ "$installtype" == "m" -o "$installtype" == "M" ] ; then
 | 
						|
 | 
						|
    echo "Installing the Management Server..." >&2
 | 
						|
    doinstall cloud-client
 | 
						|
    true
 | 
						|
 | 
						|
elif [ "$installtype" == "a" -o "$installtype" == "A" ] ; then
 | 
						|
 | 
						|
    echo "Installing the Agent..." >&2
 | 
						|
    if doinstall cloud-agent; then
 | 
						|
 | 
						|
        echo "Agent installation is completed, please add the host from management server" >&2
 | 
						|
    else
 | 
						|
        true
 | 
						|
    fi
 | 
						|
elif [ "$installtype" == "b" -o "$installtype" == "B" ] ; then
 | 
						|
    echo "Installing the BareMetal Agent..." >&2
 | 
						|
    doinstall cloud-baremetal-agent
 | 
						|
    true
 | 
						|
 | 
						|
elif [ "$installtype" == "s" -o "$installtype" == "S" ] ; then
 | 
						|
 | 
						|
    echo "Installing the Usage Server..." >&2
 | 
						|
    doinstall cloud-usage
 | 
						|
    true
 | 
						|
 | 
						|
elif [ "$installtype" == "d" -o "$installtype" == "D" ] ; then
 | 
						|
 | 
						|
    echo "Installing the MySQL server..." >&2
 | 
						|
    if doinstall mysql-server ; then
 | 
						|
        /sbin/chkconfig --add mysqld
 | 
						|
        /sbin/chkconfig --level 345 mysqld on
 | 
						|
        if /sbin/service mysqld status > /dev/null 2>&1 ; then
 | 
						|
            echo "Restarting the MySQL server..." >&2
 | 
						|
            /sbin/service mysqld restart # mysqld running already, we restart it
 | 
						|
        else
 | 
						|
            echo "Starting the MySQL server..." >&2
 | 
						|
            /sbin/service mysqld start   # we start mysqld for the first time
 | 
						|
        fi
 | 
						|
    else
 | 
						|
        true
 | 
						|
    fi
 | 
						|
 | 
						|
elif [ "$installtype" == "u" -o "$installtype" == "U" ] ; then
 | 
						|
 | 
						|
    echo "Updating the CloudStack and its dependencies..." >&2
 | 
						|
    doupdate
 | 
						|
 | 
						|
elif [ "$installtype" == "r" -o "$installtype" == "R" ] ; then
 | 
						|
 | 
						|
    echo "Removing all CloudStack packages on this computer..." >&2
 | 
						|
    doremove 'cloud-*'
 | 
						|
 | 
						|
elif [ "$installtype" == "e" -o "$installtype" == "E" ] ; then
 | 
						|
 | 
						|
    echo "Removing the MySQL server on this computer..." >&2
 | 
						|
    doremove 'mysql-server'
 | 
						|
else
 | 
						|
 | 
						|
    echo "Incorrect choice.  Nothing to do." >&2
 | 
						|
    exit 8
 | 
						|
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
echo "Done" >&2
 | 
						|
cleanup
 |