From 26c4dfbdfc7c484e49717426ea1516d559a8ac61 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 9 Jan 2018 21:40:39 +0100 Subject: infest prepare: add hetzner_rescue support --- krebs/4lib/infest/prepare.sh | 82 ++++++++++++++++++++++++++++++++------------ 1 file changed, 61 insertions(+), 21 deletions(-) (limited to 'krebs/4lib/infest/prepare.sh') diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh index ccfc4f49b..4179d8294 100644 --- a/krebs/4lib/infest/prepare.sh +++ b/krebs/4lib/infest/prepare.sh @@ -21,6 +21,10 @@ prepare() {( esac ;; debian) + if grep -Fq Hetzner /etc/motd; then + prepare_hetzner_rescue "$@" + exit + fi case $VERSION_ID in 7) prepare_debian "$@" @@ -72,7 +76,7 @@ prepare_debian() { type bzip2 2>/dev/null || apt-get install bzip2 type git 2>/dev/null || apt-get install git type rsync 2>/dev/null || apt-get install rsync - type curl 2>/dev/null || apt-get install curl + type curl 2>/dev/null || apt-get install curl prepare_common } @@ -94,6 +98,31 @@ prepare_nixos_iso() { sed -i "s@NIX_PATH=\"[^\"]*\"@NIX_PATH=$target_path@" bin/nixos-install } +prepare_hetzner_rescue() { + mountpoint /mnt + + type bzip2 2>/dev/null || apt-get install bzip2 + type git 2>/dev/null || apt-get install git + type rsync 2>/dev/null || apt-get install rsync + type curl 2>/dev/null || apt-get install curl + + mkdir -p /mnt/"$target_path" + mkdir -p "$target_path" + + if ! mountpoint "$target_path"; then + mount --rbind /mnt/"$target_path" "$target_path" + fi + + mkdir -p bin + rm -f bin/nixos-install + cp "$(type -p nixos-install)" bin/nixos-install + sed -i "s@NIX_PATH=\"[^\"]*\"@NIX_PATH=$target_path@" bin/nixos-install + + _prepare_nix_users + _prepare_nix + _prepare_nixos_install +} + get_nixos_install() { echo "installing nixos-install" 2>&1 c=$(mktemp) @@ -107,24 +136,10 @@ EOF nix-env -i -A config.system.build.nixos-install -f "" rm -v $c } + prepare_common() {( - if ! getent group nixbld >/dev/null; then - groupadd -g 30000 -r nixbld - fi - for i in `seq 1 10`; do - if ! getent passwd nixbld$i 2>/dev/null; then - useradd \ - -d /var/empty \ - -g 30000 \ - -G 30000 \ - -l \ - -M \ - -s /sbin/nologin \ - -u $(expr 30000 + $i) \ - nixbld$i - fi - done + _prepare_nix_users # # mount install directory @@ -173,10 +188,12 @@ prepare_common() {( mount --bind /nix /mnt/nix fi - # - # install nix - # + _prepare_nix + + _prepare_nixos_install +)} +_prepare_nix() {( # install nix on host (cf. https://nixos.org/nix/install) if ! test -e /root/.nix-profile/etc/profile.d/nix.sh; then ( @@ -201,8 +218,31 @@ prepare_common() {( if ! mountpoint "$target_path"; then mount --rbind /mnt/"$target_path" "$target_path" fi +)} + +_prepare_nix_users() {( + if ! getent group nixbld >/dev/null; then + groupadd -g 30000 -r nixbld + fi + for i in `seq 1 10`; do + if ! getent passwd nixbld$i 2>/dev/null; then + useradd \ + -d /var/empty \ + -g 30000 \ + -G 30000 \ + -l \ + -M \ + -s /sbin/nologin \ + -u $(expr 30000 + $i) \ + nixbld$i + fi + done +)} + +_prepare_nixos_install() { get_nixos_install + mkdir -p bin rm -f bin/nixos-install cp "$(type -p nixos-install)" bin/nixos-install @@ -212,6 +252,6 @@ prepare_common() {( echo '. /root/.nix-profile/etc/profile.d/nix.sh' >> .bashrc echo 'PATH=$HOME/bin:$PATH #krebs' >> .bashrc fi -)} +} prepare "$@" -- cgit v1.2.3 From f4a23ea078c385fd3f9bfe23f935cd6886d4571d Mon Sep 17 00:00:00 2001 From: jeschli Date: Tue, 9 Jan 2018 22:04:02 +0100 Subject: infest prepare: add _which --- krebs/4lib/infest/prepare.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'krebs/4lib/infest/prepare.sh') diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh index 4179d8294..ee5f334c7 100644 --- a/krebs/4lib/infest/prepare.sh +++ b/krebs/4lib/infest/prepare.sh @@ -94,11 +94,14 @@ prepare_nixos_iso() { mkdir -p bin rm -f bin/nixos-install - cp "$(type -p nixos-install)" bin/nixos-install + cp "$(_which nixos-install)" bin/nixos-install sed -i "s@NIX_PATH=\"[^\"]*\"@NIX_PATH=$target_path@" bin/nixos-install } prepare_hetzner_rescue() { + _which() ( + which "$1" + ) mountpoint /mnt type bzip2 2>/dev/null || apt-get install bzip2 @@ -138,6 +141,9 @@ EOF } prepare_common() {( + _which() ( + type -p "$1" + ) _prepare_nix_users @@ -245,7 +251,7 @@ _prepare_nixos_install() { mkdir -p bin rm -f bin/nixos-install - cp "$(type -p nixos-install)" bin/nixos-install + cp "$(_which nixos-install)" bin/nixos-install sed -i "s@NIX_PATH=\"[^\"]*\"@NIX_PATH=$target_path@" bin/nixos-install if ! grep -q '^PATH.*#krebs' .bashrc; then -- cgit v1.2.3 From 4c0e2b269f6f2df9725cca59e151f6c39b593fdb Mon Sep 17 00:00:00 2001 From: jeschli Date: Tue, 9 Jan 2018 22:06:16 +0100 Subject: infest prepare: remove duplicated code --- krebs/4lib/infest/prepare.sh | 5 ----- 1 file changed, 5 deletions(-) (limited to 'krebs/4lib/infest/prepare.sh') diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh index ee5f334c7..ff1ab1fb7 100644 --- a/krebs/4lib/infest/prepare.sh +++ b/krebs/4lib/infest/prepare.sh @@ -116,11 +116,6 @@ prepare_hetzner_rescue() { mount --rbind /mnt/"$target_path" "$target_path" fi - mkdir -p bin - rm -f bin/nixos-install - cp "$(type -p nixos-install)" bin/nixos-install - sed -i "s@NIX_PATH=\"[^\"]*\"@NIX_PATH=$target_path@" bin/nixos-install - _prepare_nix_users _prepare_nix _prepare_nixos_install -- cgit v1.2.3 From 794e4fe21b9d0841f80ecab184716fbf88328aed Mon Sep 17 00:00:00 2001 From: jeschli Date: Tue, 9 Jan 2018 22:07:04 +0100 Subject: infest prepare: no subshell for _prepare* --- krebs/4lib/infest/prepare.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'krebs/4lib/infest/prepare.sh') diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh index ff1ab1fb7..78c1c6ec1 100644 --- a/krebs/4lib/infest/prepare.sh +++ b/krebs/4lib/infest/prepare.sh @@ -194,7 +194,7 @@ prepare_common() {( _prepare_nixos_install )} -_prepare_nix() {( +_prepare_nix() { # install nix on host (cf. https://nixos.org/nix/install) if ! test -e /root/.nix-profile/etc/profile.d/nix.sh; then ( @@ -219,9 +219,9 @@ _prepare_nix() {( if ! mountpoint "$target_path"; then mount --rbind /mnt/"$target_path" "$target_path" fi -)} +} -_prepare_nix_users() {( +_prepare_nix_users() { if ! getent group nixbld >/dev/null; then groupadd -g 30000 -r nixbld fi @@ -238,7 +238,7 @@ _prepare_nix_users() {( nixbld$i fi done -)} +} _prepare_nixos_install() { -- cgit v1.2.3