Initial import.

This commit is contained in:
Kyle Isom 2023-04-09 18:31:44 -07:00
commit 6df60caedc
6 changed files with 122 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
packer/build

5
README.md Normal file
View File

@ -0,0 +1,5 @@
# bladerunner
This is my setup for my
[computeblade](https://publish.obsidian.md/ai6ua/Projects/Computing/ComputeBlade)
cluster, which will theoretically be here around September 2023.

7
packer/Dockerfile Normal file
View File

@ -0,0 +1,7 @@
# Set up a packer image in Docker.
FROM ubuntu:22.04
MAINTAINER Kyle Isom <kyle@imap.cc>
add . packer
ENTRYPOINT ["/usr/bin/env", "bash"]

9
packer/README.md Normal file
View File

@ -0,0 +1,9 @@
# bladerunner/packer
This directory contains the tooling to build raspberry pi images using
packer.
### Resources
- [Build a Raspberry Pi image with Packer](https://linuxhit.com/build-a-raspberry-pi-image-packer-packer-builder-arm/)

50
packer/install-packer.sh Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env bash
set -eux
PACKER_VERSION=1.8.6
INSTALL_DIR=/usr/local/bin
ARCH=amd64
PACKER_FILE=packer_${PACKER_VERSION}_linux_${ARCH}
UPSTREAM="https://github.com/mkaczanowski/packer-builder-arm"
UPGRADE="false"
prep () {
mkdir -p build
pushd build
}
install_packer () {
if [ -x ${INSTALL_DIR}/packer ]
then
return 0
fi
curl -LO https://releases.hashicorp.com/packer/${PACKER_VERSION}/${PACKER_FILE}.zip
unzip ${PACKER_FILE}
sudo mv packer ${INSTALL_DIR}/
rm ${PACKER_FILE}.zip
}
install_packer_builder_arm () {
if [ -x "${INSTALL_DIR}/packer-builder-arm" -a -z "${UPGRADE}" ]
then
return 0
fi
git clone "${UPSTREAM}"
pushd "${UPSTREAM##*/}"
go mod download
go build
sudo mv packer-builder-arm ${INSTALL_DIR}/
popd
}
cleanup {
popd
}
prep
install_packer
install_packer_builder_arm
cleanup

50
tools/install-go.sh Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env bash
set -euxo pipefail
INSTALL_DIR="/usr/local/bin"
GODEB=https://godeb.s3.amazonaws.com/godeb-${ARCH}.tar.gz
GOVERSION=1.20.3
preflight () {
if [ "$(uname -s)" != "Linux" ]
then
echo '[!] godeb is only supported on Linux.' > /dev/stderr
exit 1
fi
case "$(uname -m)" in
amd64) ARCH="amd64" ;;
arm64) ARCH="arm64" ;;
*)
echo "[!] $(uname -m) is an unsupported architecture." > /dev/stderr
echo '[!] supported architectures: amd64, arm64' > /dev/stderr
;;
esac
}
install_godeb () {
if [ -x "${INSTALL_DIR}/godeb" ]
then
return 0
fi
local GODEB_ARCHIVE="${GODEB##*/}"
pushd /tmp
curl -LO "${GODEB}"
tar xzf "${GODEB_ARCHIVE}"
sudo mv godeb "${INSTALL_DIR}/"
rm "${GODEB_ARCHIVE}"
popd
}
install_go {
pushd /tmp
echo '[*] installing go - this will request sudo'
godeb install "${GOVERSION}"
# note: deliberately leaving this in /tmp for inspection
# if needed.
popd
}