-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathdebinstall_full.sh
executable file
·163 lines (128 loc) · 4.39 KB
/
debinstall_full.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/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() {
test -f /etc/apt/sources.list.vmops.bak && mv -f /etc/apt/sources.list.vmops.bak /etc/apt/sources.list || true
}
function setuprepo() {
pathtorepo=`pwd`
echo "Setting up the temporary repository..." >&2
cp /etc/apt/sources.list /etc/apt/sources.list.vmops.bak
echo "
deb file://$pathtorepo ./" >> /etc/apt/sources.list
echo "Fetching updated listings..." >&2
aptitude update
}
function installed() {
dpkg -l "$@" 2> /dev/null | grep '^i' > /dev/null || return $?
}
function doinstall() {
aptitude install "$@" || return $?
}
function doupdate() {
service cloud-management stop
apt-get --force-yes -y -u install "cloud-*"
service cloud-management restart
}
function doremove() {
apt-get 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
"
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; 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-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 cloud-system-iso ; then
echo "Agent installation is completed, please add the host from management server" >&2
else
true
fi
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
if /usr/sbin/service mysql status > /dev/null 2>&1 ; then
echo "Restarting the MySQL server..." >&2
/usr/sbin/service mysql restart # mysqld running already, we restart it
else
echo "Starting the MySQL server..." >&2
/usr/sbin/service mysql 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