more complete copyright notices
[automated-distro-installer] / dsfull
1 #!/bin/bash
2 # Copyright (C) 2016 Ian Kelling
3
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi
17
18 reboot=true
19 if [[ $1 == -r ]]; then
20 reboot=false
21 shift
22 fi
23
24 usage() {
25 cat <<EOF
26 Usage: ${0##*/} [OPTIONS] HOST
27 "distro setup full" using fai.
28
29 Note: relies on other repos and paths specific to Ian's system.
30 Note: disables btrbk.timer. If it was active before, it should
31 be manual reenabled after completion.
32
33 -k ssh to host and kexec, don't use pxe. implies --no-r
34 --no-r Don't ssh to host and reboot. Use this for when you are
35 booting or rebooting from some other means.
36 -h|--help Print help and exit.
37
38 Note: Uses GNU getopt options parsing style
39 EOF
40 exit $1
41 }
42
43 ##### begin command line parsing ########
44
45 reboot=true
46 kexec=false
47 temp=$(getopt -l help,no-r hk "$@") || usage 1
48 eval set -- "$temp"
49 while true; do
50 case $1 in
51 --no-r) reboot=false; shift ;;
52 -k) kexec=true; reboot=false; shift ;;
53 -h|--help) usage ;;
54 --) shift; break ;;
55 *) echo "$0: Internal error!" ; exit 1 ;;
56 esac
57 done
58 host=$1
59
60 ##### end command line parsing ########
61
62 ser stop btrbk.timer
63 if [[ ! $host ]]; then
64 echo "$0: error: expected 1 arg of hostname"
65 exit 1
66 fi
67
68 if $kexec; then
69 fai-redep
70 myfai-chboot $host
71 live-kexec $host ||:
72 else
73 err-cleanup() { pxe-server; }
74 pxe-server $host fai
75
76 if $reboot; then
77 # untested, this caused hang using here doc.
78 ssh root@$host "touch /tmp/keyscript-off; reboot" ||: &
79 fi
80
81 pxe-server -a
82 unset err-cleanup
83 fi
84
85 error=true
86 for ((i=0; i<240; i++)); do
87 if timeout -s 9 10 ssh $host :; then
88 error=false
89 break
90 fi
91 sleep 5
92 done
93 faiserver-disable
94 if $error; then
95 echo "$0: error: timeout"
96 exit 1
97 fi
98 while [[ $(ser is-active btrbk.service) == active ]]; do
99 sleep 5
100 done
101 btrbk-run -t $host
102 #ssh $host /a/bin/distro-setup/distro-begin
103 # this should be done instead of distro-begin, but
104 # keeping it to 2 steps for now
105 dsremote $host