173 lines
4.5 KiB
Markdown
173 lines
4.5 KiB
Markdown
# OSVauco — VM Bootstrap Guide
|
|
|
|
> **Denne guiden gjelder ny VM eller etter serverbytte.**
|
|
> Følg stegene i rekkefølge. Ikke hopp over noe.
|
|
|
|
---
|
|
|
|
## Forutsetninger
|
|
|
|
| Krav | Verdi |
|
|
|------|-------|
|
|
| GCP-prosjekt | `propane-will-491900-m5` |
|
|
| Cloud Run region | `us-central1` |
|
|
| Vertex AI location | `us-central1` |
|
|
| Billing account | `0171F6-057E6B-A260BA` |
|
|
| gcloud CLI | Installert på VM (`gcloud version`) |
|
|
| Git | Installert (`git --version`) |
|
|
|
|
---
|
|
|
|
## Steg 1 — SSH-nøkkel til GitHub (én gang per VM)
|
|
|
|
```bash
|
|
# Generer nøkkel
|
|
ssh-keygen -t ed25519 -C "chris.christiansen@vauco.no" -f ~/.ssh/id_ed25519 -N ""
|
|
|
|
# Vis public key — kopier hele linjen
|
|
cat ~/.ssh/id_ed25519.pub
|
|
```
|
|
|
|
Gå til [github.com/settings/keys](https://github.com/settings/keys) → **New SSH key**
|
|
Tittel: `osvauco-dev-vm` → lim inn nøkkelen → **Add SSH key**
|
|
|
|
```bash
|
|
# Test tilkobling
|
|
ssh -T git@github.com
|
|
# Forventet: Hi vauco-saas! You've successfully authenticated...
|
|
```
|
|
|
|
---
|
|
|
|
## Steg 2 — Klon repo og sett opp .env
|
|
|
|
```bash
|
|
cd ~
|
|
git clone git@github.com:vauco-saas/OSVauco.git
|
|
cd OSVauco
|
|
|
|
# Sett git-identitet
|
|
git config --global user.name "Chris Christiansen"
|
|
git config --global user.email "chris.christiansen@vauco.no"
|
|
|
|
# Opprett .env
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
|
|
**Fyll inn disse to feltene** (resten er ferdigutfylt):
|
|
|
|
```bash
|
|
export BILLING_ACCOUNT_ID="0171F6-057E6B-A260BA"
|
|
# ALERT_EMAIL er allerede satt til chris.christiansen@vauco.no
|
|
```
|
|
|
|
---
|
|
|
|
## Steg 3 — Autentiser med din Google-konto
|
|
|
|
> ⚠️ **Viktig:** VM-en starter med Compute Engine default service account.
|
|
> Du MÅ logge inn som deg selv — ellers feiler alle gcloud-kall.
|
|
|
|
```bash
|
|
gcloud auth login
|
|
# Følg lenken, logg inn som chris.christiansen@vauco.no
|
|
|
|
gcloud auth application-default login
|
|
# Samme prosess — nødvendig for Vertex AI / ADK
|
|
|
|
gcloud config set project propane-will-491900-m5
|
|
gcloud config set compute/region us-central1
|
|
```
|
|
|
|
Verifiser:
|
|
```bash
|
|
gcloud auth list
|
|
# Skal vise: * chris.christiansen@vauco.no
|
|
```
|
|
|
|
---
|
|
|
|
## Steg 4 — Kjør bootstrap-scriptet
|
|
|
|
```bash
|
|
source .env
|
|
bash scripts/bootstrap.sh
|
|
```
|
|
|
|
Scriptet gjør i rekkefølge:
|
|
1. Auth-sjekk
|
|
2. Bygg base Docker-image (hvis ikke finnes)
|
|
3. Verifiser at Cloud Run-agenten svarer
|
|
|
|
---
|
|
|
|
## Steg 5 — Manuell IAM-fix (kun ved nytt prosjekt / ny CI/CD)
|
|
|
|
Disse to IAM-bindingene må ligge på plass for at CI/CD skal fungere:
|
|
|
|
```bash
|
|
# Cloud Build SA kan deploye som osvauco-agent-sa
|
|
gcloud iam service-accounts add-iam-policy-binding \
|
|
osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com \
|
|
--member="serviceAccount:357036551735@cloudbuild.gserviceaccount.com" \
|
|
--role="roles/iam.serviceAccountUser" \
|
|
--project=propane-will-491900-m5
|
|
|
|
# osvauco-agent-sa kan opptre som seg selv
|
|
gcloud iam service-accounts add-iam-policy-binding \
|
|
osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com \
|
|
--member="serviceAccount:osvauco-agent-sa@propane-will-491900-m5.iam.gserviceaccount.com" \
|
|
--role="roles/iam.serviceAccountUser" \
|
|
--project=propane-will-491900-m5
|
|
```
|
|
|
|
---
|
|
|
|
## Hurtigtest — svar fra agenten
|
|
|
|
```bash
|
|
TOKEN=$(gcloud auth print-identity-token)
|
|
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"user_id":"chris","session_id":"test-1","message":"Hei, hvem er du?"}' \
|
|
https://osvauco-agent-357036551735.us-central1.run.app/run | python3 -m json.tool
|
|
```
|
|
|
|
Forventet svar:
|
|
|
|
```json
|
|
{
|
|
"user_id": "chris",
|
|
"session_id": "test-1",
|
|
"response": "Jeg er OPAX, en OSVauco AI-agent."
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Kveld — teardown (OBLIGATORISK)
|
|
|
|
```bash
|
|
bash infrastructure/03-teardown.sh
|
|
```
|
|
|
|
Kjøres hver kveld for å unngå 24/7-fakturering.
|
|
|
|
---
|
|
|
|
## Feilsøking
|
|
|
|
| Feil | Årsak | Fix |
|
|
|------|-------|-----|
|
|
| `ACCESS_TOKEN_SCOPE_INSUFFICIENT` | Kjører som Compute SA | `gcloud auth login` |
|
|
| `Publisher Model ...gemini-2.0-flash(-001) was not found` | 2.0-modellene er utfaset / ikke tilgjengelige i prosjektet | Sett `GOOGLE_CLOUD_LOCATION=us-central1` og bruk `ORCHESTRATOR_MODEL=gemini-2.5-flash`, `SUBAGENT_MODEL=gemini-2.5-flash`, `REASONING_MODEL=gemini-3.5-flash` |
|
|
| `osvauco-base:latest not found` | Base-image ikke bygget | `bash scripts/bootstrap.sh` |
|
|
| `iam.serviceaccounts.actAs denied` | Mangler IAM-binding | Steg 5 over |
|
|
| `git push` krever passord | HTTPS-remote | `git remote set-url origin git@github.com:vauco-saas/OSVauco.git` |
|
|
| `fetch first` ved push | Remote har nyere commits | `git pull --rebase && git push` |
|
|
|
|
---
|
|
|
|
*OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1*
|