- Python 61.4%
- JavaScript 21.1%
- HTML 10.6%
- CSS 6.7%
- Dockerfile 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| docs | ||
| openinit | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
openINIT genera ficheros cloud-config (el user-data de cloud-init) desde un formulario web, y los valida contra el esquema oficial de cloud-init con avisos pensados para aprender. Está pensado para clase: OpenStack (Horizon y línea de órdenes), Incus y libvirt.
openinit web # abre el navegador en http://127.0.0.1:8000
- A la izquierda, un formulario con una pestaña por bloque de cloud-init: Sistema, Usuarios y SSH, Paquetes, Ficheros, Órdenes (con lo que pasa al terminar) y, en Avanzado, Red (el
network-configde Incus y libvirt), Discos (formatear y montar volúmenes) y Otras claves (cualquier otra clave, en YAML). - Nivel Básico (lo imprescindible) o Avanzado (todas las opciones). Solo cambia lo que se ve, nunca el YAML.
- A la derecha, el YAML generado en vivo, con sus errores y avisos. Cada aviso enlaza con la documentación de cloud-init y lleva al campo donde se corrige.
- Para: OpenStack, Incus, libvirt o cualquier nube. Ajusta los avisos y la ayuda.
- Tutorial: un panel bajo el YAML que explica cada campo y pestaña mientras trabajas, con los conceptos de cloud-init y cómo comprobar que ha funcionado. Cada campo tiene su ?. Su portada ofrece la guía de tu primera máquina (de la clave SSH a una web con nginx y tu
index.html, paso a paso y con las órdenes de cada plataforma) y Cómo usarlo. - Nuevo, Ejemplos… (máquina de clase, servidor web, Docker, página con el nombre de la instancia…), Abrir (un
user-datade tu equipo), Guardar y Copiar. - Ayudas: Cifrar contraseñas (SHA-512), plantillas de ficheros, Cargar desde mi equipo, Comprimir, repositorio de Docker en un clic, variables de la instancia (Jinja) y el proxy de APT del aula.
Al abrir un user-data, lo que el formulario no sabe representar no se pierde: se queda, tal cual, en Otras claves.
Instalación
pipx install git+https://git.josedomingo.org/josedom24/openinit.git
Docker
docker compose up -d --build
Queda en http://IP-DEL-PROFESOR:8000. No guarda nada en el servidor ni necesita volúmenes. El compose trae puesto el proxy de APT del aula; para dejarlo vacío, OPENINIT_APT_PROXY= docker compose up -d. Detrás de un proxy inverso, añade --proxy IP al command del servicio.
La imagen corre con un usuario sin privilegios y trae un HEALTHCHECK (docker compose ps muestra healthy). Sin Compose:
docker build -t openinit .
docker run -d --name openinit -p 8000:8000 openinit
Órdenes
| Orden | Qué hace |
|---|---|
openinit web |
Arranca la web en 127.0.0.1:8000 y abre el navegador (--port, --no-browser). |
openinit web --host 0.0.0.0 |
La publica en la red, por ejemplo para la clase. Detrás de un proxy inverso, --proxy IP. |
openinit web --apt-proxy URL |
«Nuevo» trae puesto el proxy de APT del aula (también OPENINIT_APT_PROXY). |
openinit check FICHERO… |
Valida uno o varios user-data (- lee de la entrada estándar; --destino openstack, incus o libvirt). Sale con 1 si hay errores. |
La web no guarda nada en el servidor: el formulario vive en el navegador de cada uno (y sobrevive a una recarga), así que se puede publicar para toda una clase sin más.
Documentación
En docs/: primeros pasos, el formulario, errores y avisos, cómo usarlo en OpenStack, Incus y libvirt, y en clase (Docker y proxy de APT).
Licencia
GPL-3.0-or-later.