-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerator.sh
executable file
·58 lines (52 loc) · 1.17 KB
/
generator.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
#!/bin/bash
BASE="cloudera-managerizer"
TEMPLATE="${BASE}.tpl"
MYSQL_CONF=$(cat my.cnf.tpl 2>/dev/null)
usageAndExit() {
echo "Usage: $0 [-v] -h <hostname> -c <cluster_hosts> -r <role> [-p <db_password>]" >&2
exit 1
}
VERBOSE=no
while getopts "vh:c:r:p:" opt; do
case $opt in
v)
VERBOSE="yes"
;;
h)
NEW_HOST=$OPTARG
;;
c)
CLUSTER_HOSTS=$OPTARG
;;
r)
ROLE=$OPTARG
;;
p)
MYSQL_PASS=$OPTARG
;;
\?)
usageAndExit
;;
:)
usageAndExit
;;
esac
done
[ -z "${NEW_HOST}" ] && usageAndExit
[ -z "${CLUSTER_HOSTS}" ] && usageAndExit
[ "${ROLE}" == "server" ] && [ "${MYSQL_PASS}" == "" ] && usageAndExit
if [ "$VERBOSE" == "yes" ]; then
echo "Hostname: ${NEW_HOST}"
echo "Cluster Hosts:"
echo "${CLUSTER_HOSTS}"
echo "Role: ${ROLE}"
fi
INTER=$(cat ${TEMPLATE} \
| sed "s/\${NEW_HOST}/${NEW_HOST}/" \
| sed "s/\${ROLE}/${ROLE}/" \
| sed "s/\${MYSQL_PASS}/${MYSQL_PASS}/")
echo "${INTER/'${CLUSTER_HOSTS}'/\"$CLUSTER_HOSTS\"}" > _tmp.sh
INTER=$(cat _tmp.sh)
echo "${INTER/'${MYSQL_CONF}'/\"$MYSQL_CONF\"}" > _tmp.sh
mv _tmp.sh ${BASE}-${NEW_HOST}.sh
chmod +x ${BASE}-${NEW_HOST}.sh