Initial OpenECOMP MSO commit
[so.git] / packages / docker / src / main / docker / docker-files / scripts / build-and-start.sh
1 #!/bin/bash -x
2
3 GIT_REPO=$mso_git_repository
4 GIT_BRANCH=$mso_git_branch
5 ! [[ $GIT_SSH_KEY ]] && GIT_SSH_KEY=/home/jboss/user
6 MVN_CENTRAL_USER=$mvn_central_user
7 MVN_CENTRAL_PWD=$mvn_central_pwd
8 WILDFLY_TAR=wildfly-10.1.0.Final.tar.gz;
9 CHEF_DEB=chefdk_0.17.17-1_amd64.deb
10
11 echo "Jboss Home:"
12 echo ${JBOSS_HOME}
13 echo "Repository :"
14 echo ${GIT_REPO}
15 echo "Branch :"
16 echo ${GIT_BRANCH}
17 echo "Ssh key file :"
18 echo ${GIT_SSH_KEY}
19 echo "Maven central user :"
20 echo ${MVN_CENTRAL_USER}
21
22 [[ ${MVN_CENTRAL_PWD} ]] && echo "with password" || echo "without password"
23
24 function update_terminal() {
25     echo "--------------------------------------------------------------------------"
26     echo $*
27     echo "--------------------------------------------------------------------------"
28 }
29
30 function update_ubuntu() {
31     update_terminal "Updating ubuntu"
32     apt-get update
33     apt-get -y dist-upgrade
34 }
35
36
37 function set_ssh_key() {
38     [[ -f /home/jboss/user ]] && return || update_terminal "Setting ssh key"
39     mkdir -p /home/jboss/.ssh/
40     mv /tmp/id_rsa /home/jboss/user
41     chown jboss:jboss -R /home/jboss/user
42     chmod 600 /home/jboss/user
43     chown jboss:jboss /home/jboss/.ssh
44     chmod 700 /home/jboss/.ssh
45
46 }
47
48 function set_maven_settings() {
49     [[ -f /home/jboss/.m2/settings.xml ]] && return || update_terminal "Updating maven settings"
50     mkdir -p /home/jboss/.m2/
51     mv /tmp/settings.xml /home/jboss/.m2/settings.xml
52     chown -R jboss:jboss /home/jboss/.m2/
53
54     # set login and password for maven central
55     sed -i "s/#PASSWORD#/$MVN_CENTRAL_PWD/g" /home/jboss/.m2/settings.xml \
56         && sed -i "s/#USERNAME#/$MVN_CENTRAL_USER/g" /home/jboss/.m2/settings.xml
57 }
58
59 function install_jboss() {
60     [[ -f $JBOSS_HOME/bin/standalone.conf ]] && [[ $(grep "LAUNCH_JBOSS_IN_BACKGROUND=true" $JBOSS_HOME/bin/standalone.conf) ]] && return || update_terminal "Installing jboss";
61
62
63     adduser --system --group jboss
64
65     curl -C - -LO http://download.jboss.org/wildfly/10.1.0.Final/$WILDFLY_TAR ;
66     tar xvfz $WILDFLY_TAR -C /opt/;
67     mv /opt/${WILDFLY_TAR%.tar.gz} $JBOSS_HOME;
68
69     chown -R jboss:jboss $JBOSS_HOME
70     echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0 -Dmso.db=MARIADB -Dmso.config.path=/etc/mso/config.d/ -Dmso.aaf.enable=false \"" >> $JBOSS_HOME/bin/standalone.conf
71     echo "LAUNCH_JBOSS_IN_BACKGROUND=true" >> $JBOSS_HOME/bin/standalone.conf
72
73 }
74
75 function create_log_folders() {
76     [[ -d /var/log/ecomp ]] && [[ /var/log/ecomp/MSO/ ]] && return || update_terminal "Creating log folders"
77     mkdir -p /var/log/ecomp/MSO/
78     chown -R jboss:jboss /var/log/ecomp
79 }
80
81 function install_mariadb_connector() {
82     [[ -f $JBOSS_HOME/standalone/configuration/standalone-full-ha-mso.xml ]] && return || update_terminal "Installing mariadb connector"
83     MARIADB_DIR=$JBOSS_HOME/modules/mariadb
84     curl -C - -O -L http://central.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/1.5.4/mariadb-java-client-1.5.4.jar
85     mkdir -p $MARIADB_DIR/main
86     mv mariadb-java-client-1.5.4.jar $MARIADB_DIR/main
87     cp /tmp/jboss-configs//modules/mariadb/main/module.xml $MARIADB_DIR/main
88     cp /tmp/jboss-configs/standalone-full-ha.xml $JBOSS_HOME/standalone/configuration/standalone-full-ha-mso.xml
89     cp /tmp/jboss-configs/configuration/application-roles.properties $JBOSS_HOME/standalone/configuration/application-roles.properties
90     cp /tmp/jboss-configs/configuration/application-users.properties $JBOSS_HOME/standalone/configuration/application-users.properties
91     cp /tmp/jboss-configs/configuration/mgmt-groups.properties $JBOSS_HOME/standalone/configuration/mgmt-groups.properties
92     cp /tmp/jboss-configs/configuration/mgmt-users.properties $JBOSS_HOME/standalone/configuration/mgmt-users.properties
93     
94     chown -R jboss:jboss $MARIADB_DIR
95 }
96
97 function dep_install() {
98     update_terminal "Installing dependencies"
99     # install requirements
100     apt-get -y install openjdk-8-jre-headless curl git maven
101     STATUS=$?
102     if [[ $STATUS != 0 ]];
103     then
104         exit 1
105     fi
106 }
107
108 function clone_mso() {
109     [[ $("ls /tmp/mso-core") ]] && return || update_terminal "Cloning mso repository"
110     # build git command
111     GIT_CMD="git clone --single-branch -b ${GIT_BRANCH-master} ${GIT_REPO} -v"
112
113     # build ssh command
114     export GIT_SSH_COMMAND="ssh -i ${GIT_SSH_KEY} -o StrictHostKeyChecking=false"
115
116     # cloning
117     su - jboss -s /bin/bash -c "export GIT_SSH_COMMAND=\"ssh -i ${GIT_SSH_KEY} -o StrictHostKeyChecking=false\"; cd /tmp/; ${GIT_CMD} mso-core"
118     STATUS=$?
119     if [[ $STATUS != 0 ]];
120     then
121         exit 2
122     fi
123 }
124 #export MAVEN_OPTS="$MAVEN_OPTS -Dhttp.proxyHost=one.proxy.att.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=one.proxy.att.com -Dhttps.proxyPort=8080"
125
126 function mso_build() {
127     update_terminal "Building Mso core"
128     # building
129     cd /tmp/mso-core
130     su jboss -s /bin/bash -c "mvn clean install"
131     STATUS=$?
132     if [[ $STATUS != 0 ]];
133     then
134         exit 4
135     fi
136 }
137
138 function war_to_temp() {
139     [[ $("ls /tmp/wars/") ]] && return || update_terminal "Copying wars to tmp directory"
140     function copy_wars() {
141         for war in `find . -iname "*.war" `;
142         do
143             cp $war /tmp/wars/
144         done
145     }
146     export -f copy_wars
147     su - jboss -s /bin/bash -c copy_wars
148     #tar xzf ./packages/deliveries/target/assembly/war-packs/*.tar.gz -C /tmp/wars/
149 }
150
151 function install_chef() {
152     [[ -d /home/jboss/.chef/nodes ]] && return || update_terminal "Installing chef"
153     curl -C - -LO  https://packages.chef.io/stable/ubuntu/12.04/$CHEF_DEB
154     dpkg -i $CHEF_DEB
155     for dir in "/etc/chef /etc/mso /var/berks-cookbooks /tmp/git /var/nodes /home/jboss/.chef/nodes";
156     do
157         mkdir -p $dir
158         chown jboss:jboss $dir
159         chmod 700 $dir
160     done
161 }
162
163 function chef_init() {
164     update_terminal "Initializing chef"
165     mkdir -p /tmp/git
166     cp /shared/solo.rb /tmp/git/
167     chown -R jboss:jboss /tmp/git
168     su - jboss -s /bin/bash -c /opt/mso/scripts/init-chef.sh
169     mv /var/berks-cookbooks/${CHEF_REPO_NAME}/environments/mso-docker.json /var/berks-cookbooks/${CHEF_REPO_NAME}/environments/mso-docker-init.json
170     ln -s /shared/mso-docker.json /var/berks-cookbooks/${CHEF_REPO_NAME}/environments/mso-docker.json
171 }
172
173 function cleanup() {
174     # cleaning & space freeup
175     echo "Cleaning up"
176
177     rm -rf /tmp/git/mso-core
178     rm -f /$WILDFLY_TAR;
179     rm -f /$CHEF_DEB
180     
181     rm -rf /home/jboss/.m2
182     apt-get remove -y maven git curl
183
184 }
185
186 function build() {
187     update_ubuntu
188     dep_install
189
190     install_jboss
191     create_log_folders
192     install_mariadb_connector
193
194     set_ssh_key
195
196     install_chef
197     chef_init
198
199
200     clone_mso
201
202     set_maven_settings
203     mso_build
204     war_to_temp
205     cleanup
206 }
207
208 function init_certif() {
209         # Copy the certificates
210         cp /shared/*.crt /usr/local/share/ca-certificates
211         update-ca-certificates
212 }
213
214 function start() {
215     su - jboss -s /bin/bash -c /opt/mso/scripts/start-jboss-server.sh
216 }
217
218 rm -f "$JBOSS_HOME/standalone/deployments/README.txt"
219 if ! [[ "$(ls -A $JBOSS_HOME/standalone/deployments/)" ]];
220 then
221     mkdir -p /tmp/wars/
222     build
223     cp /tmp/wars/* $JBOSS_HOME/standalone/deployments/
224     rm -rf /tmp/wars/
225     init_certif
226 fi
227
228 cd /opt/jboss
229
230 start