add rescue, fix default pxe, ubuntu locale
authorIan Kelling <ian@iankelling.org>
Fri, 2 Jun 2017 07:16:24 +0000 (00:16 -0700)
committerIan Kelling <ian@iankelling.org>
Fri, 2 Jun 2017 07:16:24 +0000 (00:16 -0700)
README
dsfull
fai/config/scripts/UBUNTU/90-apt [new file with mode: 0644]
faiserver-setup
myfai-chboot
myfai-chboot-local
pxe-server
wrt-setup

diff --git a/README b/README
index 5745f030bdaa9de637f58ab70c1395d30f373350..72669bb4658496a349cd4a30f66dcf280e2cd3d8 100644 (file)
--- a/README
+++ b/README
@@ -60,14 +60,18 @@ pxe-server # disable/enable pxe dhcp, tfp, and nfs
 wrt-setup-remote  # setup my router in general: dhcp, dns, etc.
 
 
-# Scripts to do a distro install
+# Script to do a distro install
 
-arch-init-remote # install arch after it's been booted into it's setup env
 dsfull # install & post-install a new fai distro
+arch-init-remote # install arch after it's been booted into it's setup env
 fai-kexec # Kexec this or a remote machine using host faiserver
+live-kexec # fai kexec from upstream live cds, e.g. curl live-kexec|bash
+
+
+# Test scripts
+
 arch-revm # test arch install on a fresh vm
 fai-revm  # test fai install on a fresh vm
-live-kexec # fai kexec from upstream live cds, e.g. curl live-kexec|bash
 
 
 # Scripts to call after a distro install for various reasons
@@ -81,7 +85,7 @@ fresize # resize swap or boot partitions in a host
 
 
 License stuff:
-The license for the project is GPLv2 or later, mostly because fai is
-and I periodically rebase off their example setup for debian. Also,
-there is a modified encrypt.upstream, which is from the cryptsetup
-package in arch, which is under the same license.
+The license for the project is GPLv2 or later, mostly because fai is and
+I periodically rebase off their example config, which contains small
+scripts. Also, there is a modified encrypt.upstream, which is from the
+cryptsetup package in arch, which is under the same license.
diff --git a/dsfull b/dsfull
index 40c933ca9c255f760aa7989f8193d8bbda85d8f3..417635014c3d8413649d7c03bb9c2ac9b92e7163 100755 (executable)
--- a/dsfull
+++ b/dsfull
@@ -32,8 +32,9 @@ Note: relies on other repos and paths specific to Ian's system.
 Note: disables btrbk.timer. If it was active before, it should
 be manual reenabled after completion.
 
---no-r     Don't ssh to host and reboot.
 -k         ssh to host and kexec, don't use pxe. implies --no-r
+--no-r     Don't ssh to host and reboot. Use this for when you are
+           booting or rebooting from some other means.
 -h|--help  Print help and exit.
 
 Note: Uses GNU getopt options parsing style
@@ -101,4 +102,5 @@ while [[ $(ser is-active btrbk.service) == active ]]; do
     sleep 5
 done
 e btrbk-run -t $host
-e dsremote $host
+ssh $host /a/bin/distro-setup/distro-begin
+#e dsremote $host
diff --git a/fai/config/scripts/UBUNTU/90-apt b/fai/config/scripts/UBUNTU/90-apt
new file mode 100644 (file)
index 0000000..5e2d1e3
--- /dev/null
@@ -0,0 +1,10 @@
+#! /bin/bash
+
+# note: the name of this scripts doesn't fit it's contents, but it's
+# because we are taking just part of the corresponding fai example
+# script, and it's easier to keep up with upstream changes if the file
+# name is the same.
+
+ainsl -v /etc/locale.gen '^en_US.UTF-8 UTF-8'
+$ROOTCMD locale-gen
+$ROOTCMD update-locale LANG=en_US.UTF-8
index f1ab4bad195b033a2ba084916208dbd57b7300df..f60ec4791a5c58d0fda16878136cfc8db7e8ac1b 100755 (executable)
@@ -154,6 +154,8 @@ s,^( *FAI_DEBOOTSTRAP=).*,\1"$base $r",
 # 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
index f65175a17234923bfed4716831a6108a5384fea5..452f8fa579cd3a45de80684a25db60d9b565fb52 100755 (executable)
@@ -22,6 +22,10 @@ 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.
 
+-S          sets FAI_ACTION=sysinfo, and remove fai flag reboot.
+            Usefull for doing a system recovery.
+-h|--help   Print help and exit.
+
 EOF
     exit $1
 }
@@ -31,4 +35,4 @@ esac
 
 
 host=$(chost faiserver)
-ssh root@$host bash -s "$@" <myfai-chboot-local
+ssh root@$host bash -s -- "$@" <myfai-chboot-local
index 35331b3f9f880aa787361eedfe611ab33b9d18e0..f21a837dc5308790c45b263c3e69aaa3dd37006c 100755 (executable)
@@ -3,11 +3,18 @@
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
+fai_action_arg=I
+fai_reboot_arg=,reboot
 case $1 in
     -h|--help)
         echo "see help from myfai-chboot"
         exit 0
         ;;
+    -S)
+        fai_action_arg=S
+        fai_reboot_arg=
+        shift
+        ;;
 esac
 
 [[ $EUID == 0 ]] || exec sudo "${BASH_SOURCE}" "$@"
@@ -17,9 +24,29 @@ e() { echo "$@"; "$@"; }
 host=$1
 
 type -t host &>/dev/null || apt-get -y install dnsutils
-ip=$(host $host | sed -rn 's/^\S+ has address //p;T;q')
-gateway_ip=$(route -n | sed -rn 's/^0\.0\.0\.0\s+(\S+).*/\1/p')
-my_ip=$(host faiserver $gateway_ip | sed -rn 's/^\S+ has address //p;T;q')
+gateway_if=$(ip route | sed -rn 's/^default via \S+ dev (\S+) .*/\1/p')
+if [[ ! $gateway_if ]]; then
+    echo "$0: failed to find gateway interface"
+    exit 1
+fi
+# assuming ipv4, or else we might need to deal with multiple addresses
+# in an ipv4 + ipv6 network.
+network=$(ip -4 -o a show dev $gateway_if | sed -rn '/scope.*global/s/^(\S+\s+){3}(\S+)\s.*/\2/p')
+if [[ ! $network ]]; then
+    echo "$0: failed to find network"
+    exit 1
+fi
+my_ip=${network%/*}
+if [[ $host == default ]]; then
+    ip=$network
+else
+    ip=$(host $host | sed -rn 's/^\S+ has address //p;T;q')/32
+fi
+
+
+# alternate way of getting my ip
+#gateway_ip=$(ip route | sed -rn 's/^default via (\S+) .*/\1/p')
+#my_ip=$(host faiserver $gateway_ip | sed -rn 's/^\S+ has address //p;T;q')
 
 if modprobe nfsd &>/dev/null; then
     std_arg="-u nfs://faiserver/srv/fai/config"
@@ -28,8 +55,8 @@ if modprobe nfsd &>/dev/null; then
     # 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)
+/srv/fai/config $ip(async,ro,no_subtree_check)
+/srv/fai/nfsroot $ip(async,ro,no_subtree_check,no_root_squash)
 EOF
     exportfs -ra
 else
@@ -51,7 +78,7 @@ fi
 
 # man page doesn't explain this, but this deletes & thus disables
 # all chboot systems.
-e fai-chboot -Iv $std_arg default # set it to default to get a val out of it next
+e fai-chboot -${fai_action_arg}v $std_arg default # set it to default to get a val out of it next
 kernel=$(fai-chboot -L '^default$' | awk '{print $3}')
 default_k_args=$(fai-chboot -L '^default$' | \
                      sed -r "s/^(\S+\s+){3}(.*)/\2/")
@@ -67,4 +94,4 @@ for arg in $default_k_args; do
     esac
 done
 rm -f /srv/tftp/fai/pxelinux.cfg/*
-e fai-chboot -k "${k_args[*]}" -v -f verbose,sshd,createvt,reboot $std_arg $kernel "$host"
+e fai-chboot -k "${k_args[*]}" -v -f verbose,sshd,createvt$fai_reboot_arg $std_arg $kernel "$host"
index bba53e6cbfbc462d7b824ef2454f413ad330bcef..ec4606012a9703d1f70e2088f051057cbd2e1c44 100755 (executable)
@@ -45,7 +45,7 @@ TYPE       One of arch, plain, fai.
            for os boot. Sometimes on debian, there is a 3rd one shortly
            after the 2nd. I can't remember exactly why this caused a
            problem, but I'm hoping the sleep will take care of it.
-
+-S         Pass -S to fai-chboot.
 -w         Setup pxe, then wait like -a.
 -h|--help  Print help and exit
 
@@ -68,12 +68,13 @@ EOF
 redep=true
 acks=2
 wait=false
-temp=$(getopt -l help harw "$@") || usage 1
+temp=$(getopt -l help harSw "$@") || usage 1
 eval set -- "$temp"
 while true; do
     case $1 in
         -a) wait=true; set=false; shift ;;
         -r) redep=false; shift ;;
+        -S) chboot_arg=-S; shift ;;
         -w) wait=true; set=true; shift ;;
         -h|--help) usage ;;
         --) shift; break ;;
@@ -92,7 +93,7 @@ case $# in
         ;;
 esac
 
-if [[ $host ]]; then
+if [[ $host && $host != default ]]; then
     host_tag="tag:$host,"
 fi
 
@@ -150,7 +151,7 @@ $([[ $type == arch ]] && echo arch-pxe-mount)"
 if $set; then
     set-pxe
     if [[ $type == fai ]]; then
-        e myfai-chboot $host
+        e myfai-chboot $chboot_arg $host
         if $redep; then
             e fai-redep
         fi
index 020385f6f674e3059b6bd0d04196f91eb78b811e..86e82cfd128c78beb2cad792db041b3bb5f07ec0 100755 (executable)
--- a/wrt-setup
+++ b/wrt-setup
@@ -331,8 +331,8 @@ EOF
 dnsmasq_restart=false
 v cedit /etc/hosts <<EOF || dnsmasq_restart=true
 192.168.1.1 wrt
-192.168.1.2 treetowl mail.iankelling.org $HOME_DOMAIN
-192.168.1.3 frodo faiserver
+192.168.1.2 treetowl mail.iankelling.org $HOME_DOMAIN faiserver
+192.168.1.3 frodo
 192.168.1.4 htpc
 192.168.1.5 x2
 192.168.1.6 demohost