summaryrefslogtreecommitdiffstats
path: root/bin/infest-CentOS-7-64bit
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-05-21 01:56:08 +0200
committertv <tv@shackspace.de>2015-05-21 01:56:08 +0200
commit36670f3e1cccad579b994a29320eeb8e287803b7 (patch)
tree484cb2c1075cdcabe8020ca40704f4d68f2b2fed /bin/infest-CentOS-7-64bit
parentb95a514bcced00af77ae4adab77326dba9ab4c36 (diff)
sh: functions -> bin/
Diffstat (limited to 'bin/infest-CentOS-7-64bit')
-rwxr-xr-xbin/infest-CentOS-7-64bit150
1 files changed, 150 insertions, 0 deletions
diff --git a/bin/infest-CentOS-7-64bit b/bin/infest-CentOS-7-64bit
new file mode 100755
index 000000000..a8afea14b
--- /dev/null
+++ b/bin/infest-CentOS-7-64bit
@@ -0,0 +1,150 @@
+#! /bin/sh
+set -euf
+
+server=$1
+hostname=$2
+
+address=$(echo $server | jq -r .ip)
+RSYNC_RSH='sshpass -e ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
+SSHPASS=$(echo $server | jq -r .rootpass)
+export SSHPASS
+export RSYNC_RSH
+
+main="modules/$hostname/default.nix"
+target="root@$address"
+
+cacnixos-networking "$server" $hostname \
+ > modules/$hostname/networking.nix
+
+echo '(
+ set -xeuf
+ type bzip2 || yum install -y bzip2
+ type rsync || yum install -y rsync
+)' \
+ | sshpass -e ssh \
+ -o StrictHostKeyChecking=no \
+ -o UserKnownHostsFile=/dev/null \
+ "root@$address" \
+ /bin/sh
+
+make-rsync-filter "$main" \
+ | rsync -f '. -' -zvrlptD --delete-excluded ./ "$target":/etc/nixos/
+
+#
+#
+#
+echo '(
+ set -xeuf
+ groupadd -g 30000 nixbld || :
+ for i in `seq 1 10`; do
+ useradd -c "foolsgarden Nix build user $i" \
+ -d /var/empty \
+ -s /sbin/nologin \
+ -g 30000 \
+ -G 30000 \
+ -l -u $(expr 30000 + $i) \
+ nixbld$i || :
+ rm -f /var/spool/mail/nixbld$i
+ done
+
+ #curl https://nixos.org/nix/install | sh
+ nix_tar=$nix_basename.tar.bz2
+ if ! echo $nix_sha256 $nix_tar | sha256sum -c; then
+ curl -O -C - $nix_url || :
+ if ! echo $nix_sha256 $nix_tar | sha256sum -c; then
+ curl -O $nix_url || :
+ if ! echo $nix_sha256 $nix_tar | sha256sum -c; then
+ echo $0: cannot download $nix_url >&2
+ exit 5
+ fi
+ fi
+ fi
+
+ if ! test -d $nix_basename; then
+ tar jxf $nix_basename.tar.bz2
+ fi
+
+ nix_find=$nix_basename.find.txt
+ if ! echo $nix_find_sha1sum $nix_find | sha1sum -c; then
+ find $nix_basename | sort > $nix_find
+ if ! echo $nix_find_sha1sum $nix_find | sha1sum -c; then
+ echo $0: cannot unpack $nix_basename.tar.bz2 >&2
+ # TODO we could retry
+ exit 6
+ fi
+ fi
+
+ mkdir -p bin
+ PATH=$HOME/bin:$PATH
+ export PATH
+
+ # generate fake sudo because
+ # sudo: sorry, you must have a tty to run sudo
+ {
+ echo "#! /bin/sh"
+ echo "exec env \"\$@\""
+ } > bin/sudo
+ chmod +x bin/sudo
+
+ ./$nix_basename/install
+
+ . /root/.nix-profile/etc/profile.d/nix.sh
+
+ nixpkgs_expr="import <nixpkgs> { system = builtins.currentSystem; }"
+ nixpkgs_path=$(
+ find /nix/store -mindepth 1 -maxdepth 1 -name *-nixpkgs-* -type d
+ )
+
+ for i in nixos-generate-config nixos-install; do
+ nix-env \
+ --arg config "{ nix.package = ($nixpkgs_expr).nix; }" \
+ --arg pkgs "$nixpkgs_expr" \
+ --arg modulesPath "throw \"no modulesPath\"" \
+ -f $nixpkgs_path/nixpkgs/nixos/modules/installer/tools/tools.nix \
+ -iA config.system.build.$i
+ done
+
+ # TODO following fail when aborted in-between
+ if ! test -d /int; then
+ mkdir -p /int
+ mount --bind /int /mnt
+ fi
+ if ! test -d /mnt/boot; then
+ mkdir -p /mnt/boot
+ mount /dev/sda1 /mnt/boot
+ fi
+
+ mkdir -p /mnt/etc/nixos
+ rsync -zvrlptD --delete-excluded /etc/nixos/ /mnt/etc/nixos/
+
+ mkdir -m 0444 -p /mnt/var/empty
+
+ ln -s $main /mnt/etc/nixos/configuration.nix
+ nixos-install \
+ -I secrets=/etc/nixos/secrets
+
+ find / \
+ 1> /root/pre-rsync-find.out \
+ 2> /root/pre-rsync-find.err
+
+ rsync -va --force /int/ /
+
+ # find / -type f -mtime +1 -exec rm -v {} \; 2>&1 > rm.log
+ # ^ too aggressive, kills journal which is bad
+ # shutdown -r now
+ # nix-channel --add https://nixos.org/channels/nixos-unstable nixos
+ # nix-channel --remove nixpkgs
+ # nix-channel --update
+
+)' \
+ | sshpass -e ssh \
+ -o StrictHostKeyChecking=no \
+ -o UserKnownHostsFile=/dev/null \
+ "root@$address" \
+ -T /usr/bin/env \
+ nix_url="$nix_url" \
+ nix_basename="$(basename $nix_url .tar.bz2)" \
+ nix_sha256="$nix_sha256" \
+ nix_find_sha1sum="$nix_find_sha1sum" \
+ main="$main" \
+ /bin/sh