39 lines
1.2 KiB
Bash
Executable File
39 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
mkdir -p /opt/spire/data/server
|
|
|
|
if [ ! -f /opt/spire/server.conf ]; then
|
|
echo "Writing default SPIRE server.conf..."
|
|
cp /etc/spire/templates/server.conf /opt/spire/server.conf
|
|
chmod 644 /opt/spire/server.conf
|
|
fi
|
|
|
|
# Launch SPIRE Server in background to allow auto-bootstrap token generation
|
|
/usr/local/bin/spire-server "$@" &
|
|
SERVER_PID=$!
|
|
|
|
# Helper: Auto-generate bootstrap join token for local agent on initial enrollment
|
|
(
|
|
SOCKET="/opt/spire/data/server/api.sock"
|
|
for i in $(seq 1 30); do
|
|
if [ -S "$SOCKET" ]; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
if [ -S "$SOCKET" ] && [ ! -f /opt/spire/data/agent/svid.key ]; then
|
|
echo "[SPIRE Server] Generating auto-bootstrap join token for local agent..."
|
|
TOKEN_OUTPUT=$(/usr/local/bin/spire-server token generate -spiffeID spiffe://system.local/agent -socketPath "$SOCKET" 2>/dev/null || true)
|
|
TOKEN=$(echo "$TOKEN_OUTPUT" | grep -i "token:" | awk '{print $2}')
|
|
if [ -n "$TOKEN" ]; then
|
|
echo "$TOKEN" > /opt/spire/data/bootstrap_token
|
|
chmod 600 /opt/spire/data/bootstrap_token
|
|
echo "[SPIRE Server] Auto-bootstrap token ready."
|
|
fi
|
|
fi
|
|
) &
|
|
|
|
wait "$SERVER_PID"
|