Node Provisioning Runbook: Preparing the Nodes
owner: “Platform Engineering” classification: “CONFIDENTIAL” tags: [“provisioning”, “kernel”, “tpm2”, “tetragon”, “tailscale”]
Section titled “owner: “Platform Engineering” classification: “CONFIDENTIAL” tags: [“provisioning”, “kernel”, “tpm2”, “tetragon”, “tailscale”]”1. Purpose
Section titled “1. Purpose”This runbook covers the Preparation of the Nodes — transforming bare metal or VM into a fully configured chamber node ready to join the pool.
2. Hardware Requirements
Section titled “2. Hardware Requirements”| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores, VT-x/AMD-V | 8+ cores, nested virt |
| RAM | 16 GB | 32+ GB |
| Storage | 256 GB NVMe | 1 TB NVMe |
| TPM | 2.0 | 2.0 with PCR banks |
| Network | 1 Gbps | 10 Gbps + dedicated mgmt |
3. OS Installation
Section titled “3. OS Installation”- Boot Syn_OS ISO (chamber profile)
- Select “Chamber Node” profile at installer
- Disk: LUKS2 + LVM,
/var/lib/chamber-poolon separate LV - Network: Static IP, Tailscale auth key injected
4. Kernel Hardening
Section titled “4. Kernel Hardening”Apply 97-homelab.conf:
cp /usr/share/synos/kernel/97-homelab.conf /etc/sysctl.d/sysctl --systemVerify:
verify-kernel-hardening.sh --jsonGRUB cmdline (persist via grubby):
slab_nomerge page_poison=1 vsyscall=none module.sig_enforce=1 lockdown=confidentiality5. TPM2 Provisioning
Section titled “5. TPM2 Provisioning”# Take ownershiptpm2_takeownership -c -p <owner-pass>
# Create endorsement keytpm2_createprimary -C e -g sha256 -c primary.ctx
# Create attestation keytpm2_create -C primary.ctx -g sha256 -u ak.pub -r ak.privtpm2_evictcontrol -C o -c ak.ctx 0x81010001Verify:
tpm2_getcap handles-persistent | grep 810100016. Tetragon Deployment
Section titled “6. Tetragon Deployment”# Pull imagedocker pull quay.io/cilium/tetragon:v1.7.1
# Run with gRPCdocker run -d --name tetragon \ --privileged --pid=host --cgroupns=host \ -v /sys/kernel/debug:/sys/kernel/debug \ -v /run/tetragon:/run/tetragon \ -p 54321:54321 \ quay.io/cilium/tetragon:v1.7.1 \ --enable-policy=true --grpc-endpoint=0.0.0.0:54321Verify:
tetra getevents -o json | head -17. Chamber Pool Worker
Section titled “7. Chamber Pool Worker”# Install systemd servicecp /opt/synos/systemd/chamber-pool-worker.service /etc/systemd/system/cp /opt/synos/systemd/chamber-pool-worker.service.d/override.conf /etc/systemd/system/chamber-pool-worker.service.d/
# Configureecho "POOL_DIR=/var/lib/chamber-pool" > /etc/default/chamber-poolecho "POOL_SIZE=3" >> /etc/default/chamber-pool
# Enable and startsystemctl daemon-reloadsystemctl enable --now chamber-pool-workerVerify:
chamber-pool.sh list8. Tailscale Registration
Section titled “8. Tailscale Registration”tailscale up --authkey=<key> --advertise-tags=tag:chamber-nodeVerify ACL:
tailscale status9. Validation
Section titled “9. Validation”Run full hardware + software check:
verify-kernel-hardening.sh --json > /var/log/node-validation.jsone2e-test.sh --duration 10 --timeout 4010. Rollback
Section titled “10. Rollback”| Step | Rollback |
|---|---|
| Kernel params | grubby --remove-args="..." |
| TPM2 keys | tpm2_evictcontrol -C o -c 0x81010001 |
| Tetragon | docker stop tetragon && docker rm tetragon |
| Pool worker | systemctl disable --now chamber-pool-worker |
11. Contacts
Section titled “11. Contacts”| Role | Contact |
|---|---|
| Platform Engineer | @platform-eng |
| TPM Custodian | @tpm-custodian |