feat(tyr): add spire bootstrap script and update roadmap

This commit is contained in:
Chris Christiansen 2026-09-02 18:45:21 +00:00
parent ff9d4db5f9
commit 6fdc79c5dc
3 changed files with 121 additions and 0 deletions

View File

@ -8,6 +8,7 @@ This document tracks the high-level goals and future development milestones for
## Phase 1: TYR Service Identity (SPIFFE/SVID)
- [x] Deploy step-ca
- [~] Bootstrap SPIRE (staged, pending daemon execution)
## Phase 3: Memory Bank & Project Management
- [x] Implement `read_memory_bank` and `write_memory_bank` MCP tools.

View File

@ -3,3 +3,7 @@
- **Phase 1.1: Deploy step-ca**
- Status: **Complete**
- Notes: `step ca init` was successful and the `step-ca` systemd service is active.
- **Phase 1.2: Bootstrap SPIRE**
- Status: **Staged**
- Notes: `install_spire.sh` executed successfully. Configs are generated, pending manual daemon execution.

116
tyr/scripts/install_spire.sh Executable file
View File

@ -0,0 +1,116 @@
#!/bin/bash
#
# install_spire.sh - Downloads, configures, and provides instructions for SPIRE server and agent.
#
set -euo pipefail
# --- Configuration ---
# Please verify the latest version from https://github.com/spiffe/spire/releases
SPIRE_VERSION="1.15.3"
ARCH="linux-amd64-musl"
TRUST_DOMAIN="vauco.no"
SERVER_BIND_ADDRESS="0.0.0.0"
SERVER_BIND_PORT="8081"
# --- Script Start ---
# 1. Download and unpack SPIRE binaries
echo "--- Downloading SPIRE v${SPIRE_VERSION} ---"
if [ -d "spire-${SPIRE_VERSION}" ]; then
echo "SPIRE directory already exists. Skipping download."
else
wget https://github.com/spiffe/spire/releases/download/v${SPIRE_VERSION}/spire-${SPIRE_VERSION}-${ARCH}.tar.gz
tar -xzf spire-${SPIRE_VERSION}-${ARCH}.tar.gz
rm spire-${SPIRE_VERSION}-${ARCH}.tar.gz
fi
cd spire-${SPIRE_VERSION}
# 2. Create SPIRE server configuration
echo "--- Creating SPIRE server config (conf/server/server.conf) ---"
cat > conf/server/server.conf <<EOF
server {
bind_address = "${SERVER_BIND_ADDRESS}"
bind_port = "${SERVER_BIND_PORT}"
trust_domain = "${TRUST_DOMAIN}"
data_dir = "./data"
log_level = "INFO"
ca_subject = {
country = ["NO"],
organization = ["Vauco"],
common_name = "",
}
}
plugins {
NodeAttestor "gcp_iit" {
plugin_data {}
}
KeyManager "memory" {
plugin_data {}
}
Notifier "noop" {
plugin_data {}
}
# This configures SPIRE to use the certificates created by step-ca as a signing authority.
# This is a basic integration. For a production setup, you might chain it as an UpstreamAuthority.
UpstreamAuthority "disk" {
plugin_data {
cert_file_path = "/home/chris_christiansen/.step/certs/intermediate_ca.crt"
key_file_path = "/home/chris_christiansen/.step/secrets/intermediate_ca_key"
}
}
}
EOF
# 3. Create SPIRE agent configuration
echo "--- Creating SPIRE agent config (conf/agent/agent.conf) ---"
cat > conf/agent/agent.conf <<EOF
agent {
data_dir = "./data"
log_level = "INFO"
server_address = "127.0.0.1"
server_port = "${SERVER_BIND_PORT}"
trust_bundle_path = "./conf/root.crt" # The agent will fetch this on startup
trust_domain = "${TRUST_DOMAIN}"
}
plugins {
NodeAttestor "gcp_iit" {
plugin_data {}
}
KeyManager "memory" {
plugin_data = {}
}
WorkloadAttestor "unix" {
plugin_data {
discover_workloads = true
}
}
}
EOF
cd ..
echo ""
echo "✅ SPIRE installation script and configuration templates have been created."
echo ""
echo "--- Next Steps ---"
echo "1. Review the generated configuration files in 'spire-${SPIRE_VERSION}/conf/'"
echo "2. Manually run the SPIRE server from your terminal:"
echo " cd spire-${SPIRE_VERSION} && ./bin/spire-server run"
echo "3. In another terminal, fetch the trust bundle for the agent:"
echo " cd spire-${SPIRE_VERSION} && ./bin/spire-server bundle show > ./conf/agent/root.crt"
echo "4. Run the SPIRE agent:"
echo " cd spire-${SPIRE_VERSION} && sudo ./bin/spire-agent run"
echo "5. Create registration entries for your workloads."