Fix sandbox provision script
Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -98,6 +98,8 @@ VM_IP=$(ip -4 -j addr show dev lima0 | jq -r '.[0].addr_info[0].local')
|
|||||||
|
|
||||||
su - "${LIMA_USER}" -c "export PATH=/usr/local/go/bin:\$HOME/go/bin:\$PATH && cd /workspace && make bin/probod-bootstrap"
|
su - "${LIMA_USER}" -c "export PATH=/usr/local/go/bin:\$HOME/go/bin:\$PATH && cd /workspace && make bin/probod-bootstrap"
|
||||||
|
|
||||||
|
make -C /workspace compose/pebble/certs/rootCA.pem compose/keycloak/probo-realm.json
|
||||||
|
|
||||||
mkdir -p /etc/probod
|
mkdir -p /etc/probod
|
||||||
|
|
||||||
OAUTH2_SIGNING_KEY_PATH=/etc/probod/oauth2-signing-key.pem
|
OAUTH2_SIGNING_KEY_PATH=/etc/probod/oauth2-signing-key.pem
|
||||||
@@ -125,12 +127,27 @@ AWS_ENDPOINT="http://127.0.0.1:8333" \
|
|||||||
AWS_ACCESS_KEY_ID="probod" \
|
AWS_ACCESS_KEY_ID="probod" \
|
||||||
AWS_SECRET_ACCESS_KEY="thisisnotasecret" \
|
AWS_SECRET_ACCESS_KEY="thisisnotasecret" \
|
||||||
AWS_USE_PATH_STYLE=true \
|
AWS_USE_PATH_STYLE=true \
|
||||||
|
ACME_DIRECTORY="https://127.0.0.1:14000/dir" \
|
||||||
|
ACME_EMAIL="admin@getprobo.com" \
|
||||||
|
ACME_KEY_TYPE="EC256" \
|
||||||
|
ACME_ROOT_CA="$(cat /workspace/compose/pebble/certs/rootCA.pem)" \
|
||||||
/workspace/bin/probod-bootstrap -output /etc/probod/config.yml
|
/workspace/bin/probod-bootstrap -output /etc/probod/config.yml
|
||||||
|
|
||||||
# probod runs as ${LIMA_USER} but bootstrap writes config.yml as root with 0600
|
# probod runs as ${LIMA_USER} but bootstrap writes config.yml as root with 0600
|
||||||
# because it contains secrets. Transfer ownership so probod can read it.
|
# because it contains secrets. Transfer ownership so probod can read it.
|
||||||
chown "${LIMA_USER}:${LIMA_USER}" /etc/probod/config.yml "${OAUTH2_SIGNING_KEY_PATH}"
|
chown "${LIMA_USER}:${LIMA_USER}" /etc/probod/config.yml "${OAUTH2_SIGNING_KEY_PATH}"
|
||||||
|
|
||||||
|
# Populate VM-local node_modules with Linux-native binaries (esbuild, etc.).
|
||||||
|
# The host's node_modules is macOS; `probo-node-modules.service` bind-mounts an
|
||||||
|
# empty tree over /workspace/node_modules, and we install into it once here so
|
||||||
|
# `make build` and the dev servers can run without cross-platform mismatches.
|
||||||
|
if [ -z "$(ls -A /var/lib/probo/node_modules 2>/dev/null)" ]; then
|
||||||
|
su - "${LIMA_USER}" -c "cd /workspace && npm ci"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build bin/probod to get dependencies, notably embedded files
|
||||||
|
make -C /workspace bin/probod SKIP_APPS=1
|
||||||
|
|
||||||
echo "VITE_API_URL=http://${VM_IP}:8080" > /workspace/apps/console/.env
|
echo "VITE_API_URL=http://${VM_IP}:8080" > /workspace/apps/console/.env
|
||||||
echo "VITE_API_URL=http://${VM_IP}:8080" > /workspace/apps/trust/.env
|
echo "VITE_API_URL=http://${VM_IP}:8080" > /workspace/apps/trust/.env
|
||||||
|
|
||||||
@@ -154,7 +171,7 @@ WantedBy=multi-user.target
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Install systemd services for the sandbox
|
# Install systemd services for the sandbox
|
||||||
cat > /etc/systemd/system/probo-stack.service << 'EOF'
|
cat > /etc/systemd/system/probo-stack.service << EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Probo Docker Compose Stack
|
Description=Probo Docker Compose Stack
|
||||||
Requires=docker.service
|
Requires=docker.service
|
||||||
@@ -183,7 +200,7 @@ After=probo-stack.service
|
|||||||
Type=simple
|
Type=simple
|
||||||
User=${LIMA_USER}
|
User=${LIMA_USER}
|
||||||
WorkingDirectory=/workspace
|
WorkingDirectory=/workspace
|
||||||
ExecStart=/usr/local/bin/gow -r=false run ./cmd/probod -cfg-file /etc/probod/config.yml
|
ExecStart=/usr/local/bin/gow -r=false run ./cmd/probod -cfg-file /etc/probod/config.yml -format pretty
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=3s
|
RestartSec=3s
|
||||||
Environment=PATH=/usr/local/go/bin:/usr/local/bin:/usr/bin:/bin
|
Environment=PATH=/usr/local/go/bin:/usr/local/bin:/usr/bin:/bin
|
||||||
@@ -232,11 +249,3 @@ systemctl daemon-reload
|
|||||||
systemctl enable --now probo-node-modules.service
|
systemctl enable --now probo-node-modules.service
|
||||||
systemctl enable --now probo-stack.service
|
systemctl enable --now probo-stack.service
|
||||||
systemctl enable probod.service probo-console.service probo-trust.service
|
systemctl enable probod.service probo-console.service probo-trust.service
|
||||||
|
|
||||||
# Populate VM-local node_modules with Linux-native binaries (esbuild, etc.).
|
|
||||||
# The host's node_modules is macOS; `probo-node-modules.service` bind-mounts an
|
|
||||||
# empty tree over /workspace/node_modules, and we install into it once here so
|
|
||||||
# `make build` and the dev servers can run without cross-platform mismatches.
|
|
||||||
if [ -z "$(ls -A /var/lib/probo/node_modules 2>/dev/null)" ]; then
|
|
||||||
su - "${LIMA_USER}" -c "cd /workspace && npm ci"
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -76,15 +76,12 @@ cmd_create() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
limactl create "${create_args[@]}" "${TEMPLATE}"
|
limactl create "${create_args[@]}" "${TEMPLATE}"
|
||||||
limactl start "${VM_NAME}"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
cmd_status
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_start() {
|
cmd_start() {
|
||||||
echo "Starting sandbox: ${VM_NAME}"
|
echo "Starting sandbox: ${VM_NAME}"
|
||||||
limactl start "${VM_NAME}"
|
limactl start "${VM_NAME}"
|
||||||
|
cmd_exec -- sudo systemctl start probod probo-console probo-trust
|
||||||
echo ""
|
echo ""
|
||||||
cmd_status
|
cmd_status
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user