Files
rollcall/deploy/install.sh
T
ilkerandClaude Fable 5.1 d9ae89b295
CI / agent (push) Successful in 3s
CI / site (push) Successful in 2s
CI / go (push) Successful in 1m15s
Rollcall: bare-metal commissioning server, agent, image build, lab and CI
Go server (API, embedded web UI, CLI) backed by PostgreSQL with AES-GCM
sealed BMC secrets; Debian live commissioning agent and live-build recipe;
Proxmox lab with pve-vbmc virtual BMCs; Gitea workflows for CI, releases
and deployment; project website.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-27 01:29:53 +01:00

29 lines
1.6 KiB
Bash

#!/bin/sh
# Install the rollcall binary on pxe-server. Run as root from this directory.
# Prereqs: PostgreSQL running locally with role+db "rollcall";
# /etc/rollcall/config.json present (see config.example.json).
set -eu
cd "$(dirname "$0")"
getent passwd rollcall >/dev/null || useradd --system --no-create-home --shell /usr/sbin/nologin --user-group rollcall
install -d -m 0750 -o root -g rollcall /etc/rollcall
install -d /srv/rollcall/image
[ -x ./rollcall ] && install -m 0755 rollcall /usr/local/bin/rollcall
install -m 0644 rollcall.service /etc/systemd/system/
[ -e /etc/rollcall/config.json ] || { echo "write /etc/rollcall/config.json first (see config.example.json)" >&2; exit 1; }
chown root:rollcall /etc/rollcall/config.json && chmod 0640 /etc/rollcall/config.json
# master key is created by the service on first start; the dir must be writable for that
chown rollcall:rollcall /etc/rollcall
# rollcall writes per-MAC pxelinux configs
chgrp rollcall /srv/tftp/pxelinux.cfg && chmod 2775 /srv/tftp/pxelinux.cfg
install -m 0644 /usr/lib/syslinux/modules/bios/poweroff.c32 /srv/tftp/poweroff.c32
sed "s/@AGENT_TOKEN@/$(jq -r .agent_token /etc/rollcall/config.json)/g" pxelinux-default > /srv/tftp/pxelinux.cfg/default && chmod 0644 /srv/tftp/pxelinux.cfg/default
[ -e /srv/tftp/rollcall ] || ln -s /srv/rollcall/image /srv/tftp/rollcall
[ -d /srv/tftp/efi64 ] && ln -sfn ../rollcall /srv/tftp/efi64/rollcall
# old python prototype
rm -f /usr/local/bin/rollcall /usr/local/bin/commctl
systemctl daemon-reload
systemctl enable --now rollcall.service
systemctl restart rollcall.service
sleep 1
systemctl --no-pager status rollcall.service | head -5