348ce3cb4c3c052172d13358c609f8d78115cf37
[genesis.git] / fuel / build / f_isoroot / f_bootstrap / bootstrap_admin_node.sh
1 #!/bin/bash
2
3 function countdown() {
4   local i
5   sleep 1
6   for ((i=$1-1; i>=1; i--)); do
7     printf '\b\b%02d' "$i"
8     sleep 1
9   done
10 }
11
12 function fail() {
13   echo "ERROR: Fuel node deployment FAILED! Check /var/log/puppet/bootstrap_admin_node.log for details" 1>&2
14   exit 1
15 }
16 # LANG variable is a workaround for puppet-3.4.2 bug. See LP#1312758 for details
17 export LANG=en_US.UTF8
18 showmenu="no"
19 if [ -f /root/.showfuelmenu ]; then
20   . /root/.showfuelmenu
21 fi
22
23 echo -n "Applying default Fuel settings..."
24 fuelmenu --save-only --iface=eth0
25 echo "Done!"
26
27 ### OPNFV addition BEGIN
28 shopt -s nullglob
29 for script in /opt/opnfv/bootstrap/pre.d/*.sh
30 do
31   echo "Pre script: $script" >> /root/pre.log 2>&1
32   $script >> /root/pre.log 2>&1
33 done
34 shopt -u nullglob
35 ### OPNFV addition END
36
37 if [[ "$showmenu" == "yes" || "$showmenu" == "YES" ]]; then
38   fuelmenu
39   else
40   #Give user 15 seconds to enter fuelmenu or else continue
41   echo
42   echo -n "Press a key to enter Fuel Setup (or press ESC to skip)... 15"
43   countdown 15 & pid=$!
44   if ! read -s -n 1 -t 15 key; then
45     echo -e "\nSkipping Fuel Setup..."
46   else
47     { kill "$pid"; wait $!; } 2>/dev/null
48     case "$key" in
49       $'\e')  echo "Skipping Fuel Setup.."
50               echo -n "Applying default Fuel setings..."
51               fuelmenu --save-only --iface=eth0
52               echo "Done!"
53               ;;
54       *)      echo -e "\nEntering Fuel Setup..."
55               fuelmenu
56               ;;
57     esac
58   fi
59 fi
60 #Reread /etc/sysconfig/network to inform puppet of changes
61 . /etc/sysconfig/network
62 hostname "$HOSTNAME"
63
64 ### docker stuff
65 images_dir="/var/www/nailgun/docker/images"
66
67 # extract docker images
68 mkdir -p $images_dir $sources_dir
69 rm -f $images_dir/*tar
70 pushd $images_dir &>/dev/null
71
72 echo "Extracting and loading docker images. (This may take a while)"
73 lrzip -d -o fuel-images.tar fuel-images.tar.lrz && tar -xf fuel-images.tar && rm -f fuel-images.tar
74 popd &>/dev/null
75 service docker start
76
77 # load docker images
78 for image in $images_dir/*tar ; do
79     echo "Loading docker image ${image}..."
80     docker load -i "$image"
81     # clean up extracted image
82     rm -f "$image"
83 done
84
85 # apply puppet
86 puppet apply --detailed-exitcodes -d -v /etc/puppet/modules/nailgun/examples/host-only.pp
87 if [ $? -ge 4 ];then
88   fail
89 fi
90 rmdir /var/log/remote && ln -s /var/log/docker-logs/remote /var/log/remote
91
92 dockerctl check || fail
93 bash /etc/rc.local
94
95 ### OPNFV addition BEGIN
96 shopt -s nullglob
97 for script in /opt/opnfv/bootstrap/post.d/*.sh
98 do
99   echo "Post script: $script" >> /root/post.log 2>&1
100   $script >> /root/post.log 2>&1
101 done
102 shopt -u nullglob
103 ### OPNFV addition END
104
105 echo "Fuel node deployment complete!"