Gyors kezdés

KernelHost API

1. API-kulcs létrehozása

Jelentkezzen be, és az ügyfélportál "KernelHost API" menüpontjában hozzon létre egy kulcsot. Csak azokat a jogosultságokat válassza ki, amelyekre valóban szüksége van (alapértelmezés: csak olvasás). A titok csak egyszer jelenik meg, ezért tárolja biztonságosan a titokkezelőjében.

2. Hozzáférési adatok tárolása

Mentse el a kulcsot és a titkot környezeti változóként. Soha ne tárolja a kódban, soha ne tárolja tárolóban.

# .env vagy shell profil
export KH_KEY="kh_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export KH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

3. Első kérés elküldése

Listázza az elérhető termékeket. Az aláírás a metódus, útvonal, időbélyeg, nonce és törzs hash felett képződik.

TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_SHA256=$(printf '' | openssl dgst -sha256 -hex | awk '{print $NF}')
SIG_INPUT=$(printf 'GET\n/v1/products\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')

curl https://www.kernelhost.com/cp/kernelhost_api/v1/products \
  -H "KH-Key: $KH_KEY" \
  -H "KH-Timestamp: $TS" \
  -H "KH-Nonce: $NONCE" \
  -H "KH-Signature: $SIG"

4. Megrendelés leadása

Fontos: a POST /v1/orders hívás Idempotency-Key fejlécet és hosztnevet igényel. Ha egy hálózati hiba után ugyanazzal az Idempotency-Key értékkel ismétli meg a kérést, második megrendelés helyett ugyanazt a választ kapja vissza. A kihagyott konfigurációs opciók (például a helyszín vagy az operációs rendszer) a boltban elsőként kínált értéket kapják.

BODY='{"product_id":42,"billing_cycle":"monthly","hostname":"web01.example.com"}'
IDEM="order-web01-$(date +%Y%m%d)"
BODY_SHA256=$(printf '%s' "$BODY" | openssl dgst -sha256 -hex | awk '{print $NF}')
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
SIG_INPUT=$(printf 'POST\n/v1/orders\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')

curl -X POST https://www.kernelhost.com/cp/kernelhost_api/v1/orders \
  -H "KH-Key: $KH_KEY" \
  -H "KH-Timestamp: $TS" \
  -H "KH-Nonce: $NONCE" \
  -H "KH-Signature: $SIG" \
  -H "Idempotency-Key: $IDEM" \
  -H "Content-Type: application/json" \
  --data "$BODY"

5. Állapot ellenőrzése és hozzáférési adatok lekérése

A megrendelésre adott válasz tartalmazza a service_ids listát. Kérdezze le ismételten a GET /v1/services/{id} végpontot, amíg a status értéke active nem lesz, és a szolgáltatás meg nem kapja az IP-címét; az üzembe helyezés általában néhány másodperctől néhány percig tart. Ezután a GET /v1/services/{id}/credentials (read:credentials jogosultsággal) visszaadja a hosztnevet, az IP-címeket, a felhasználónevet és a jelszót, például egy Ansible-inventoryhoz.

kh_get() {
  TS=$(date +%s)
  NONCE=$(openssl rand -hex 16)
  BODY_SHA256=$(printf '' | openssl dgst -sha256 -hex | awk '{print $NF}')
  SIG_INPUT=$(printf 'GET\n%s\n%s\n%s\n%s' "$1" "$TS" "$NONCE" "$BODY_SHA256")
  SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $NF}')
  curl -s "https://www.kernelhost.com/cp/kernelhost_api$1" \
    -H "KH-Key: $KH_KEY" \
    -H "KH-Timestamp: $TS" \
    -H "KH-Nonce: $NONCE" \
    -H "KH-Signature: $SIG"
}

kh_get /v1/services/1234
kh_get /v1/services/1234/credentials

6. Webhook URL beállítása (opcionális)

Kulcsonként már most beállíthat egy HTTPS URL-t. Az események kézbesítése előkészítés alatt áll; addig használja az 5. lépésben leírt állapotlekérdezéseket.