various fixes and improvements
[automated-distro-installer] / faiserver-setup
index f60ec4791a5c58d0fda16878136cfc8db7e8ac1b..491cfda4107b274ef69f378b1c6fbe390df8dacd 100755 (executable)
@@ -15,8 +15,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
-set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+x="$(readlink -f "$BASH_SOURCE")"; source "${x%/*}/bash-trace"
 
 [[ $EUID == 0 ]] || exec sudo "${BASH_SOURCE}" "$@"
 
@@ -44,12 +43,10 @@ esac
 
 e() { echo "$@"; "$@"; }
 
-# When stretch becomes stable, change this to stretch.
-# I\'ve tested this with stretch, it works, but notably,
 # the automatic basefile getting will be for stretch
 # instead of jessie, so if you install jessie, you need
 # to setup the basefile and it\'s corresponding class.
-base=jessie
+base=stretch
 sed="sed -ri --follow-symlinks"
 
 if ! type -p wget &>/dev/null; then
@@ -60,12 +57,7 @@ armhf() {
     [[ $(dpkg --print-architecture) == armhf ]]
 }
 
-if grep -xFq 'VERSION="9 (stretch)"' /etc/os-release; then
-  # if we use stretch, no need for fai-project repo.
-  # this will need to be updated when there is a codename
-  # for stretch+1
-  rm -f /etc/apt/sources.list.d/fai.list
-elif armhf; then
+if armhf; then
   if apt-cache policy | grep o=Debian,a=testing,n=stretch &>/dev/null; then
     cat >/etc/apt/sources.list.d/testing.list <<'EOF'
 deb http://http.us.debian.org/debian testing main contrib non-free
@@ -88,11 +80,19 @@ Pin: release a=testing
 Pin-Priority: -10
 EOF
   fi
-else
-    wget -O - http://fai-project.org/download/074BCDE4.asc | apt-key add -
-    cat >/etc/apt/sources.list.d/fai.list <<'EOF'
+elif grep -xFq 'VERSION="8 (jessie)"' /etc/os-release; then
+  gpg -a --recv-keys 2BF8D9FE074BCDE4; gpg -a --export 2BF8D9FE074BCDE4 | apt-key add -
+  cat >/etc/apt/sources.list.d/fai.list <<'EOF'
 deb http://fai-project.org/download jessie koeln
 EOF
+elif grep -xFq 'VERSION="9 (stretch)"' /etc/os-release; then
+  gpg -a --recv-keys 2BF8D9FE074BCDE4; gpg -a --export 2BF8D9FE074BCDE4 | apt-key add -
+
+  cat >/etc/apt/sources.list.d/fai.list <<'EOF'
+deb http://fai-project.org/download stretch koeln
+EOF
+else
+    rm -f /etc/apt/sources.list.d/fai.list
 fi
 
 # for ubuntu:
@@ -127,15 +127,22 @@ deb $r $base main contrib
 deb http://security.debian.org/debian-security $base/updates main contrib
 EOF
 
+
+case $base in
+    jessie|stretch)
+        cat >>/etc/fai/apt/sources.list <<EOF
+# use fai repo. it's commented in the defaults. it's got bug fixes.
+# and may contain newer packages.
+deb http://fai-project.org/download $base koeln
+EOF
+        ;;
+esac
+
 if [[ $base == jessie ]]; then
   cat >>/etc/fai/apt/sources.list <<'EOF'
-# uncommenting this from the defaults. it's got bug fixes.
-# repository that may contain newer fai packages for jessie
-deb http://fai-project.org/download jessie koeln
 # fix tar https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819978
 deb http://ftp.debian.org/debian jessie-backports main
 EOF
-
   # note, fai doesn\'t look at /etc/fai/apt/preferences.d
   cat >/etc/fai/apt/preferences <<'EOF'
 Package: tar
@@ -148,14 +155,16 @@ fi
 # tried out a stretch base, doesn't work yet.
 #
 $sed -f - /etc/fai/nfsroot.conf <<EOF
+$ a FAI_ROOTPW='$(</q/root/shadow/standard)'
+/^\s*FAI_ROOTPW/d
+$ a SSH_IDENTITY=/root/.ssh/home.pub
+/^\s*SSH_IDENTITY/d
 s,^( *FAI_DEBOOTSTRAP=).*,\1"$base $r",
 # add --arch amd64. this is needed on arm system which is
 # used to install amd64 clients. On amd64 servers, it's redundant.
 # disabled for now, since creating fai nfsroot on my arm machine
 # is not working
 #/--arch amd64/!s/^(\s*FAI_DEBOOTSTRAP_OPTS=")/\1--arch amd64 /
-/^\s*FAI_ROOTPW/d
-$ a FAI_ROOTPW="$(</q/root/shadow/standard)"
 EOF
 
 $sed 's/#LOGUSER/LOGUSER/' /etc/fai/fai.conf
@@ -170,7 +179,7 @@ fi
 if armhf; then
   cd /srv/fai
   rm -rf nfsroot
-  tar Jxf /a/bin/fai-basefiles/base.tar.xz
+  tar Jxf /a/bin/fai-basefiles/basefiles/STRETCH64.tar.xz
   # background: Can't build the nfsroot on my arm system now.  First,
   # fai-make-nfsroot won't work out of the box. One idea to make it work
   # is by installing qemu-user-static, then copying qemu-x86_64-static
@@ -212,7 +221,7 @@ if armhf; then
   diff -u <(type setup_tftp) <(cat <(sed -n '/^setup_tftp(){/,/^}/p' $(which fai-make-nfsroot) ) - <<'EOF' |bash
 type setup_tftp
 EOF
-)
+                              )
   setup_tftp
 
   # -g causes skipping set_root_pw() in fai-make-nfsroot, -ag
@@ -220,8 +229,10 @@ EOF
   # seem contradictory, but it works.
   fai-setup -evag
 
-else
-    e fai-setup -e -vf
+else # not armhf
+    # note, this copies the -B arg to
+    # /srv/fai/nfsroot/var/tmp/base.tar.xz
+    e fai-setup -evf -B /a/bin/fai-basefiles/basefiles/STRETCH64.tar.xz
     # make the faiserver also the apt proxy server
     apt-get -y install apt-cacher-ng
 fi