From 4f40688eeb78b660c40d14214533cbc9491deae3 Mon Sep 17 00:00:00 2001 From: Jonni Liljamo Date: Wed, 26 Nov 2025 21:48:52 +0200 Subject: [PATCH] feat: justfile organization and payload, init, deploy --- just/alpine.just | 34 +++++++++++++++++++ justfile | 86 +++++++++++++++++++++++------------------------- 2 files changed, 76 insertions(+), 44 deletions(-) create mode 100644 just/alpine.just diff --git a/just/alpine.just b/just/alpine.just new file mode 100644 index 0000000..d24b5af --- /dev/null +++ b/just/alpine.just @@ -0,0 +1,34 @@ +# Download Alpine Linux keys +keys: + #!/usr/bin/env sh + mkdir -p common/etc/apk/keys + cd common/etc/apk/keys + + # Copy the names unser APKBUILD from here: + # https://git.alpinelinux.org/aports/plain/main/alpine-keys + keys=" + alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub + alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub + alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub + alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub + alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub + alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub + alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub + alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub + alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub + alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub + alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub + alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub + alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub + alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub + alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub + alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub + alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub + alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub + " + + for key in $keys; do + curl -O "https://git.alpinelinux.org/aports/plain/main/alpine-keys/${key}" + done + + curl -O "https://mirror.sr.ht/alpine/alpine@sr.ht.rsa.pub" diff --git a/justfile b/justfile index 2a483f7..bbd05f7 100644 --- a/justfile +++ b/justfile @@ -1,7 +1,11 @@ +# Alpine Linux setup +mod alpine "./just/alpine.just" + _default: just --list # Check if host directory exists +[group("check")] host-dir-exists host: #!/usr/bin/env sh if [ ! -d {{host}} ]; then @@ -9,7 +13,22 @@ host-dir-exists host: exit 1 fi +# Check host reachability via ping +[group("check")] +host-reachable host: (host-dir-exists host) + #!/usr/bin/env sh + ping -w 1 -c 1 $(cat ./{{host}}/ADDRESS) + if [ $? -ne 0 ]; then + echo "{{host}} is not reachable" + exit 1 + fi + +# All checks +[group("check")] +check host: (host-dir-exists host) (host-reachable host) + # Remove common files from host +[group("cleanup")] remove-common host: (host-dir-exists host) #!/usr/bin/env sh prefix="./common/" @@ -18,26 +37,23 @@ remove-common host: (host-dir-exists host) rm -f "./{{host}}/files/$path" done -# Merge common files into host directory -merge-with-common host: (host-dir-exists host) - cp --archive --force ./common/. ./{{host}}/files/ - # Remove build artifacts +[group("cleanup")] remove-artifacts host: (host-dir-exists host) rm -f "./{{host}}/{{host}}.img" rm -f "./{{host}}/{{host}}.packages" + rm -f "./{{host}}/payload.tar.gz" -# Check host reachability via ping -host-reachable host: (host-dir-exists host) - #!/usr/bin/env sh - ping -w 1 -c 1 $(cat ./{{host}}/ADDRESS) - if [ $? -ne 0 ]; then - echo "{{host}} is not reachable" - exit 1 - fi +# All cleanups +[group("cleanup")] +cleanup host: (remove-common host) (remove-artifacts host) + +# Merge common files into host directory +merge-with-common host: (host-dir-exists host) + cp --archive --force ./common/. ./{{host}}/files/ # Test the IMGBUILD by building an image -test host: (host-dir-exists host) (merge-with-common host) && (remove-common host) (remove-artifacts host) +test host: (host-dir-exists host) (merge-with-common host) && (cleanup host) #!/usr/bin/env sh cd ./{{host}} sudo makeimg --format "raw 4g msdos ext4" @@ -47,37 +63,19 @@ get-anemos host: (host-reachable host) ssh root@$(cat ./{{host}}/ADDRESS) curl https://git.sr.ht/~bitfehler/anemos-cli/blob/master/anemos -o anemos ssh root@$(cat ./{{host}}/ADDRESS) chmod +x ./anemos -# Download alpine linux keys -alpine-keys: +# Tar the payload for a host +payload host: (host-dir-exists host) (merge-with-common host) #!/usr/bin/env sh - mkdir -p common/etc/apk/keys - cd common/etc/apk/keys - - # Copy the names unser APKBUILD from here: - # https://git.alpinelinux.org/aports/plain/main/alpine-keys - keys=" - alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub - alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub - alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub - alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub - alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub - alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub - alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub - alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub - alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub - alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub - alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub - alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub - alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub - alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub - alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub - alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub - alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub - alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub - " + cd ./{{host}} + tar czf payload.tar.gz IMGBUILD files - for key in $keys; do - curl -O "https://git.alpinelinux.org/aports/plain/main/alpine-keys/${key}" - done +# Initialize a new host +init host: (check host) (get-anemos host) (payload host) && (cleanup host) + scp ./{{host}}/payload.tar.gz ./{{host}}/files/etc/anemos.conf root@$(cat ./{{host}}/ADDRESS): + ssh root@$(cat ./{{host}}/ADDRESS) ./anemos -c anemos.conf - curl -O "https://mirror.sr.ht/alpine/alpine@sr.ht.rsa.pub" +# Deploy an existing host +deploy host: (check host) (get-anemos host) (payload host) && (cleanup host) + scp ./{{host}}/payload.tar.gz root@$(cat ./{{host}}/ADDRESS): + ssh root@$(cat ./{{host}}/ADDRESS) mount /boot + ssh root@$(cat ./{{host}}/ADDRESS) ./anemos -- 2.44.1