lilalo

view install @ 158:d775ffd49dbf

minifix: bsd/darwin in uname
author Igor Chubin <igor@chub.in>
date Wed Feb 01 17:14:54 2012 +0200 (2012-02-01)
parents 93e08c4b54ed
children
line source
1 #!/bin/sh
3 hostname=`hostname`
4 uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
6 ###############################################################################
7 #
8 # Set this variables before installation:
10 lilalo_user=${lilalo_user:-YOUR-L3BACKEND-USER}
11 lab=${lab:-SET-YOUR-FIRSTLAB-NAME-HERE}
12 install_l3bashrc_for_this_users=${users:-"root user"} # users who will use l3agent and l3script
13 lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
15 #
16 ###############################################################################
19 lilalo_rc=.l3rc
20 lilalo_home=.lilalo
21 url_lilalo="http://xgu.ru/lilalo"
22 url_l3bashrc="${url_lilalo}"/l3bashrc
23 url_l3agent="${url_lilalo}"/l3-agent
24 url_l3config_pm="${url_lilalo}"/l3config.pm
25 url_l3config="${url_lilalo}"/l3-config
26 url_l3prompt="${url_lilalo}"/l3prompt
27 url_perl_modules=${url_lilalo}/
28 perl_modules="Term-VT102 Text-Iconv"
30 apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
32 wget=wget
33 uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
35 normC='\033[0;39m'
36 whiteC='\033[1;37m'
37 redC='\033[0;31m'
38 greenC='\033[0;32m'
40 apt_get_install_deps()
41 {
42 return 0
43 if which apt-get >& /dev/null
44 then
45 apt-get install -y $apt_get_install_this
46 else
47 echo "Please install this dependencies manually:"
48 echo $apt_get_install_this
49 echo "Have you installed this already (y/n)?"
50 echo y | read answer
51 if echo $answer | grep -q ^[yY]
52 then
53 true
54 else
55 echo Please install the dependencies and rerun the script
56 exit 1
57 fi
58 fi
59 }
62 step()
63 {
65 msg="$1"
66 shift
67 printf "${whiteC}""$msg""...${normC}\n"
68 # eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
69 eval "$@" 2>&1 > log 2>&1 && \
70 {
71 cat log | sed 's/^/|\ \ \ /'
72 printf "${greenC}""Ok\n""${normC}"
73 } || \
74 {
75 cat log | sed 's/^/|\ \ \ /'
76 printf "${redC}""Failed\n""${normC}"
77 }
78 }
80 get_user_home()
81 {
82 uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
83 }
85 install_to_users_homes()
86 {
87 . l3bashrc
88 users="$@"
89 set -x
90 for user in $users
91 do
92 user_home=`get_user_home "$user"`
93 mkdir -p ${user_home}/${lilalo_home}
94 mkdir /etc/lilalo/
95 cp l3config.pm /etc/lilalo/
96 cp l3-agent /usr/local/bin
97 cp l3-config /usr/local/bin
98 ln -s `which bash` /usr/local/bin/l3script
99 chmod 755 /usr/local/bin/l3-{agent,config}
100 cp l3bashrc ${user_home}/${lilalo_home}
101 cp l3prompt ${user_home}/${lilalo_home}
102 chmod 755 ${user_home}/${lilalo_home}/l3prompt
103 chown -R $user ${user_home}/${lilalo_home}
104 echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc}
105 chown -R $user ${user_home}/${lilalo_rc}
106 done
107 set +x
108 }
110 install_to_users_bashrc()
111 {
112 users="$@"
113 for user in $users
114 do
115 user_home=`get_user_home "$user"`
116 grep -q lilalo ${user_home}/.bashrc 2> /dev/null\
117 || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
118 done
119 }
121 install_to_users_bash_profile()
122 {
123 users="$@"
124 for user in $users
125 do
126 user_home=`get_user_home "$user"`
127 grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \
128 || { echo >> ${user_home}/.bash_profile ; cat ${user_home}/.bash_profile | sed '1s/^/l3-agentX/' | tr X '\n' > /tmp/$$$$l3 ; mv /tmp/$$$$l3 ${user_home}/.bash_profile; chown -R ${user} ${user_home}/.bash_profile; }
129 done
130 }
132 show_usage()
133 {
134 cat <<USAGE
135 Usage:
136 $0
137 USAGE
138 }
140 show_final_message()
141 {
142 cat <<FINAL_MESSAGE
145 Installation is successfully completed.
146 Now restart your shell or relogin
147 to start script writing.
149 Your current lilalo context is ${lilalo_context}/USER
150 If you use xgu.ru backend, your labs will be available at
151 http://xgu.ru/l3/${lilalo_context}
153 Use commands
154 $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER
155 $ l3pwd
156 to change and to know your current context.
158 For further information see http://xgu.ru/lilalo/ (in Russian).
160 Thank you gor using LiLaLo.
161 Happy Labbing!
163 (don't forget to restart bash or relogin)
165 FINAL_MESSAGE
166 }
169 temp_dir=/tmp/lilalo-install-temp-$$
170 mkdir -p ${temp_dir}
171 cd ${temp_dir}
172 step "Installing dependencies" apt_get_install_deps
173 step "Downloading l3bashrc" ${wget} ${url_l3bashrc}
174 step "Downloading l3prompt" ${wget} ${url_l3prompt}
175 step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
176 step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
177 step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
178 step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
179 step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
180 step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
181 cd /
182 rm -rf ${temp_dir}
184 show_final_message