30 lines
1.1 KiB
Markdown
30 lines
1.1 KiB
Markdown
# fireactions
|
|
|
|
¡WIP!
|
|
|
|
una API para correr cosas aisladas en una VM [firecracker] que inicia rápido a partir de una imágen de contenedor OCI. inspirado en [Fly Machines] y otras cosas.
|
|
|
|
[notas y referencias sobre firecracker](https://nulo.ar/Firecracker.html) en mi sitio
|
|
|
|
[firecracker]: <https://github.com/firecracker-microvm/firecracker>
|
|
[Fly Machines]: <https://fly.io/docs/reference/machines/>
|
|
|
|
## setup
|
|
|
|
```sh
|
|
# build rootfs image (incl. agent)
|
|
(cd rootfs; pnpm install)
|
|
node rootfs/index.js
|
|
# run daemon
|
|
(cd server; pnpm install && pnpm start) &
|
|
# run VM
|
|
curl "localhost:8080/run?image=gitea.nulo.in/nulo/super-image:3.18"
|
|
```
|
|
|
|
## componentes
|
|
|
|
1. `server` es el servidor de api (JavaScript/TypeScript) que recibe pedidos, descarga imagenes OCI y inicia firecracker con los parametros apropiados.
|
|
1. `rootfs` es el código (JavaScript/TypeScript) que genera el rootfs con todo lo necesario para configurar la vm (red (WIP), mounts básicos, etc) y montar la imágen.
|
|
1. `rootfs/init` es un programa (Rust) que hace las cosas básicas antes de y para montar la imágen OCI y hace chroot.
|
|
|