-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh.in
More file actions
executable file
·203 lines (181 loc) · 6.61 KB
/
setup.sh.in
File metadata and controls
executable file
·203 lines (181 loc) · 6.61 KB
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#!/bin/sh
# Copyright (C) 2017-2020 CS GROUP - France
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
print_help(){
cat << HELPMSG
Usage : $0 [--admin|--metro|--sup|--no-verify-pkg|--auto|--default-password [--help|-h]]
Par défaut, installe un serveur avec toutes les options.
Options :
--admin installe un serveur "Administration Centrale"
--metro installe un serveur "Stockage de données de métrologie"
--sup installe un serveur "Collecte de Supervision"
--no-verify-pkg pas de vérification de la signature des paquets
--auto pas de confirmation pour l'installation des dépendances des paquets
--default-password pas de confirmation pour l'utilisation des mots de passe par défaut
HELPMSG
exit 0
}
while [ -n "$1" ]; do
case "$1" in
--help|-h)
print_help
;;
--admin)
DO_admin="YES"
shift
;;
--metro)
DO_metro="YES"
shift
;;
--sup)
DO_sup="YES"
shift
;;
--no-verify-pkg)
NO_PKG_CHECK=1
export NO_PKG_CHECK
shift
;;
--auto)
AUTO_INSTALL=1
export AUTO_INSTALL
shift
;;
--default-password)
DEFAULT_PASSWORD="--default-password"
export DEFAULT_PASSWORD
shift
;;
*)
print_help
;;
esac
done
TAG="all"
# Si des options particulières ont été spécifiées,
# on ne traite que les actions qui leur sont associées.
[ -z "$DO_admin" ] || TAG="admin"
[ -z "$DO_metro" ] || TAG="$TAG,metro"
[ -z "$DO_sup" ] || TAG="$TAG,sup"
# Si toutes les options sont positionnées,
# on effectue tous les traitements.
[ -n "$DO_admin" ] && [ -n "$DO_metro" ] && [ -n "$DO_sup" ] && TAG="all"
# Suppression de "," s'il s'agit du premier caractère.
TAG=${TAG#,}
# Détection de la distribution.
if [ -f /etc/mandriva-release ]; then
DISTRO=mandriva
DIST_VER=`sed -e 's/.* release \([0-9]\+\).*/\1/' /etc/mandriva-release`
DIST_TAG=mes$DIST_VER
elif [ -f /etc/redhat-release ]; then
DISTRO=redhat
DIST_VER=`sed -e 's/.* release \([0-9]\+\).*/\1/' /etc/redhat-release`
DIST_TAG=rhel$DIST_VER
elif [ -f /etc/debian_version ]; then
DISTRO=debian
DIST_VER=`sed -e 's/^\([0-9]\+\).*/\1/' /etc/debian_version`
DIST_TAG=debian$DIST_VER
elif [ -f /etc/gentoo-release ]; then
DISTRO=gentoo
DIST_VER=`sed -e 's/.* release \([0-9]\+\).*/\1/' /etc/gentoo-release`
DIST_TAG=gentoo$DIST_VER
else
echo "ATTENTION : distribution non supportée."
echo "Êtes-vous certain de vouloir continuer ? (o/N)"
read answer
if [ "$answer" != "o" ]; then
echo "Abandon à la demande de l'utilisateur."
exit 0
fi
DISTRO=
DIST_VER=
DIST_TAG=unknown
fi
export DISTRO DIST_VER DIST_TAG
# Lecture de la conf
CONF=${CONF:-@SYSCONFDIR@/vigilo/setup/setup.conf}
if [ -f $CONF ]; then
. $CONF
else
echo "Impossible de trouver $CONF. Abandon."
exit 1
fi
# Configuration des variables d'environnement.
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
export PATH
# Import de la couche de compatibilité.
. $SETUP_MODULES/compat.sh
# Tous les scripts doivent être idempotents.
# Ils seront lancés depuis leur répertoire.
vigilo_call_script() {
script=$1
dir=`dirname $script`
tag=`cat $dir/TAG 2> /dev/null | sort -u | sed -e 's/ //g' -e '/^$/d' -e '/^#/d'`
# check if this module is needed
if [ "$TAG" != "all" ] ; then
TAG_found="NO"
for i in "$tag" ; do
[ -z "$i" ] && return 0
echo "$TAG" | grep -E -q "$i" && TAG_found="YES"
done
if [ "$TAG_found" != "YES" ]; then
return 0
fi
fi
curdir=`pwd`
cd "$dir" > /dev/null
bash ./`basename $script`
RETVAL=$?
cd "$curdir" > /dev/null
if [ $RETVAL != 0 ]; then
echo "L'exécution du $script a échoué."
exit $RETVAL
fi
}
# D'abord, les scripts qui n'utilisent pas les données installées localement.
for script in `ls $SETUP_MODULES/[0-2]*/run.sh 2>/dev/null`; do
vigilo_call_script $script
done
echo
echo "La suite de ce script va créer les utilisateurs et les bases. C'est le moment de changer les mots de passe par défaut. Pour cela, arrêtez ce script (Ctrl-C), changez les mots de passe dans /etc/vigilo/*/settings.ini et relancez ce script. Appuyez sur Entrée pour continuer avec les mots de passe par défaut." | fmt
[ -z "$DEFAULT_PASSWORD" ] && read unused
# Ensuite, les scripts qui utilisent les données de configuration locales
# (notamment les mots de passe).
for script in `ls $SETUP_MODULES/[3-9]*/run.sh 2>/dev/null`; do
vigilo_call_script $script
done
if [ "$TAG" = "all" ]; then
echo
echo "Maintenant, vérifiez dans /var/log/messages que tout s'est bien passé. Nagios devrait tourner."
echo "VigiBoard est accessible sur http://`hostname -f`/vigilo/vigiboard/"
echo "VigiMap est accessible sur http://`hostname -f`/vigilo/vigimap/"
echo "VigiGraph est accessible sur http://`hostname -f`/vigilo/vigigraph/"
echo "Nagios est accessible sur http://`hostname -f`/nagios/ avec le login \"nagios\" et le mot de passe \""`cat /etc/nagios/passwd.plaintext`"\""
fi
echo "$TAG" | grep -E -q "sup"
if [ "$?" = "0" ]; then
echo
echo "Maintenant, vérifiez dans /var/log/messages que tout s'est bien passé. Nagios devrait tourner."
echo "Nagios est accessible sur http://`hostname -f`/nagios/ avec le login \"nagios\" et le mot de passe \"`cat /etc/nagios/passwd.plaintext`\" "
echo "Pensez à régler ce mot de passe dans les fichiers settings.ini des interfaces web."
fi
echo "$TAG" | grep -E -q "admin"
if [ "$?" = "0" ]; then
echo
echo "Maintenant, vérifiez dans /var/log/messages que tout s'est bien passé."
echo "VigiBoard est accessible sur http://`hostname -f`/vigilo/vigiboard/"
echo "VigiMap est accessible sur http://`hostname -f`/vigilo/vigimap/"
echo "VigiGraph est accessible sur http://`hostname -f`/vigilo/vigigraph/"
fi
echo "$TAG" | grep -E -q "metro"
if [ "$?" = "0" ]; then
echo
echo "Maintenant, vérifiez dans /var/log/messages que tout s'est bien passé."
echo "VigiRRD est accessible sur http://`hostname -f`/vigilo/vigirrd/"
fi
#TODO remplacer automatiquement les noms des serveurs dans les fichiers de configuration
#echo "Veuillez entrer l'adresse du serveur d'administation Centrale"
#echo "Veuillez entrer l'adresse du serveur de stockage des données de métrologie"
#echo "Veuillez entrer l'adresse du serveur de supervision"
# vim: set et sw=4 ts=4: