trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
host=$1
-addr=$(host $host | sed -rn 's/^.*has address (.*)/\1/p;T;q')
-h=$(host $addr)
-h=${h##* }
+addr=$(getent hosts $host | awk '{print $1}')
+h=$(getent hosts $addr | awk '{print $2}')
echo ${h%%.*}
#wget -nv -N $u
EOF
-faiserver-enable
usage 1
fi
-ssh root@$(chost faiserver) "sed -ri --follow-symlinks 's,^/srv/fai/,#\0,' /etc/exports; exportfs -ra"
+ssh root@$(chost faiserver) "sed -ri --follow-symlinks '\%^/srv/fai/d' /etc/exports; exportfs -ra"
+++ /dev/null
-#!/bin/bash
-
-set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-
-usage() {
- cat <<EOF
-Usage: ${0##*/}
-Disable the fai nfs server.
-EOF
- exit $1
-}
-
-if [[ $1 ]]; then
- usage 1
-fi
-
-host=$(chost faiserver)
-ssh root@$host "sed -ri --follow-symlinks 's,^\s*#\s*(/srv/fai/.*),\1,' /etc/exports; exportfs -ra"
if ! grep cryptsetup /etc/fai/NFSROOT &>/dev/null; then
$sed '/^PACKAGES install$/a cryptsetup' /etc/fai/NFSROOT
fi
-e fai-setup -vf
+e fai-setup -e -vf
{ head -n 1 /srv/fai/nfsroot/root/.ssh/known_hosts | awk '{print $1}' \
| tr '\n' ' '; ssh-keyscan localhost | grep -o "ecdsa-sha2-nistp256.*"; \
} >>/srv/fai/nfsroot/root/.ssh/known_hosts
usage() {
cat <<EOF
-usage: ${0##*/} [-h|--help] [hostname|ip|default]...
+usage: ${0##*/} [-h|--help] [hostname|ip]
-Sets up tftp pxe config on host "faiserver". Argument sets the host to
-enable it for, "default" is for all hosts. No argument disables for all
-hosts.
+Sets up tftp pxe config and nfs config on host "faiserver". Argument
+sets the host to enable it for. No argument disables pxe config for all
+hosts, but leaves nfs server alone. Use faiserver-disable to disable
+the nfs server.
EOF
exit $1
}
exit 0
fi
+host=$1
+ip=$(getent hosts $host | awk '{print $1}')
+
std_arg="-u nfs://faiserver/srv/fai/config"
e fai-chboot -Iv $std_arg default # set it to default to get a val out of it next
kernel=$(fai-chboot -L '^default$' | awk '{print $3}')
k_args=$(fai-chboot -L '^default$' | \
sed -r "s/^(\S+\s+){3}(.*root=)(.*)/\2$my_ip:\3/")
rm -f /srv/tftp/fai/pxelinux.cfg/*
-e fai-chboot -k "$k_args" -v -f verbose,sshd,createvt,reboot $std_arg $kernel "$@"
+e fai-chboot -k "$k_args" -v -f verbose,sshd,createvt,reboot $std_arg $kernel "$host"
+
+# fai-setup without -e sets the ip to the local_ip/local_network, eg 192.168.1.3/24
+# I restrict it to one ip as simple but imperfect access control.
+sed -ri --follow-symlinks '\%^/srv/fai/%d' /etc/exports
+cat >>/etc/exports <<EOF
+/srv/fai/config $ip/32(async,ro,no_subtree_check)
+/srv/fai/nfsroot $ip/32(async,ro,no_subtree_check,no_root_squash)
+EOF
+exportfs -ra
# todo, remove the nopxe script. adjust fai-check to reboot if it fails on the kexec.