Commit | Line | Data |
---|---|---|
0155bbac JD |
1 | #!/bin/bash |
2 | ||
61d11f3d | 3 | _ProdServers=" app4 app5 app6 utility0 sip2 bibc-prod" |
1f0c9b83 | 4 | |
0155bbac JD |
5 | usage() |
6 | { | |
7 | cat <<EOF | |
8 | USAGE: | |
9 | ./deployfile.sh -f filename -p /path/to/destination/ [ -u remoteuser ] [ -b ] host1 [ host2 ... ] | |
c41c58e7 | 10 | ./deployfile.sh -f evergreen.git/Open-ILS/something/something -d [ -u remoteuser ] [ -b ] host1 [ host2 ... ] |
0155bbac JD |
11 | |
12 | OPTIONS: | |
13 | -f Name of file to be deployed | |
c41c58e7 JD |
14 | -p Path on remote server where file should be deployed to (overrides -d) |
15 | -d Determine remote path automatically (experimental; ignored if a path is specified with -p) | |
0155bbac JD |
16 | -u Username to use when logging into remote server; if not provided, defaults to current user |
17 | -b Backup flag (optional); creates a backup instead of overwriting file on remote server | |
c41c58e7 | 18 | -P Auto add all production machines to host list |
0155bbac | 19 | -h Print this message and exit |
c41c58e7 | 20 | -v Verbose output - echo parameters to stdout |
0155bbac JD |
21 | EOF |
22 | } | |
23 | ||
c41c58e7 | 24 | while getopts ":f:p:u:bdPvh" opt |
0155bbac JD |
25 | do |
26 | case $opt in | |
27 | f ) FILE=$OPTARG;; | |
28 | p ) DEST=$OPTARG;; | |
c41c58e7 | 29 | d ) AUTOPATH="d";; |
0155bbac JD |
30 | u ) USER=$OPTARG;; |
31 | b ) BACKUP="-b --suffix=.`date +%Y%m%d%H%M`";; | |
1f0c9b83 | 32 | P ) PROD="P";; |
c41c58e7 | 33 | v ) VERBOSE="v";; |
0155bbac JD |
34 | h ) usage && exit 0;; |
35 | esac | |
36 | done | |
37 | shift $(($OPTIND - 1)) | |
38 | ||
c41c58e7 | 39 | if [[ -z "$FILE" ]] || ([[ -z "$DEST" ]] && [[ -z "$AUTOPATH" ]]) | ([[ $# -lt 1 ]] && [[ -z "$PROD" ]]) |
0155bbac JD |
40 | then |
41 | usage | |
42 | exit 1 | |
c41c58e7 JD |
43 | fi |
44 | ||
45 | # attempt to determine the remote destination path automatically | |
46 | if [[ -n "$AUTOPATH" ]] && [[ -z "$DEST" ]] | |
47 | then | |
48 | ||
49 | AUTODEST=$FILE | |
50 | ||
51 | # TPAC | |
52 | if [ "$FILE" == "$AUTODEST" ]; then | |
53 | AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/src/templates/\(.*\)$|/srv/openils/var/templates/\1|') | |
54 | fi | |
55 | ||
56 | # perl | |
57 | if [ "$FILE" == "$AUTODEST" ]; then | |
58 | AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/src/perlmods/lib/\(.*\)$|/usr/local/share/perl/5.14.2/\1|') | |
59 | fi | |
0155bbac | 60 | |
c41c58e7 JD |
61 | # web |
62 | if [ "$FILE" == "$AUTODEST" ]; then | |
63 | AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/web/\(.*\)$|/srv/openils/var/web/\1|') | |
0155bbac JD |
64 | fi |
65 | ||
c41c58e7 JD |
66 | # xul |
67 | if [ "$FILE" == "$AUTODEST" ]; then | |
68 | AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/xul/staff_client/server/\(.*\)$|/srv/openils/var/web/xul/server/\1|') | |
1f0c9b83 | 69 | fi |
70 | ||
c41c58e7 JD |
71 | if [ "$FILE" == "$AUTODEST" ]; then |
72 | echo "Destination path could not be determined.\n" | |
73 | exit 1 | |
74 | fi | |
75 | ||
76 | DEST=$AUTODEST | |
77 | ||
0155bbac | 78 | fi |
c41c58e7 | 79 | |
23767567 | 80 | if [[ -z "$USER" ]] |
c41c58e7 JD |
81 | then |
82 | SSH="ssh" | |
83 | else | |
84 | SSH="ssh -l${USER}" | |
85 | fi | |
86 | ||
87 | if [[ -z "$PROD" ]] | |
88 | then | |
89 | _hosts="$@" | |
90 | else | |
91 | echo "adding ${_ProdServers} to hosts" | |
92 | _hosts="$@$_ProdServers" | |
93 | fi | |
94 | ||
95 | for HOST in $_hosts | |
96 | do | |
97 | RSYNC_DEST="${HOST}:${DEST}" | |
98 | if [[ -z "$VERBOSE" ]]; then | |
99 | echo -e "$HOST:\n\tFILE=$FILE\n\tDEST=$DEST\n\tUSER=$USER\n\tBACKUP=$BACKUP\n\tSSH=$SSH\n\tRSYNC_DEST=$RSYNC_DEST\n\tAUTOPATH=$AUTOPATH\n\tAUTODEST=$AUTODEST\n" | |
100 | fi | |
101 | rsync -e"${SSH}" $BACKUP -avz $FILE $RSYNC_DEST | |
102 | done |