Introducción
Sora Conductor es un asistente de terminal, escrito en Python, que configura y despliega todos los servicios del servidor orquestador: la primera máquina de la red Sora y de la que dependen todas las demás (DNS, base de datos, monitorización, copias de seguridad, ...).
Es el primer paso de toda la infraestructura. Servicios que en el Rasp Project se instalaban siguiendo guías manuales, aquí se convierten en un formulario que se rellena una vez y se puede repetir en cualquier servidor.
Requisitos
- Ubuntu Server x64. Todos los paquetes se instalan con
apt; otras distribuciones basadas enaptpueden funcionar, pero no están probadas. - Un usuario con
sudosin contraseña, oroot. - Python 3.8 o superior. Si no existe, el script de arranque lo instala.
Ejecución
El método más rápido descarga el proyecto y lanza el asistente con un único comando, como root:
sudo bash -c "$(curl -fsSL https://gitlab.com/api/v4/projects/ReiIzumi%2Fsora-conductor/repository/files/init-sora-conductor.sh/raw?ref=main)"
El script instala git si hace falta, clona el repositorio y ejecuta conductor.sh, el cual detecta el sistema operativo, comprueba Python y pip, instala las dependencias (Textual y Typer) y abre el asistente.
Una vez descargado, se puede volver a lanzar desde la carpeta del proyecto:
# Asistente completo
./conductor.sh
# Un único paso, por número o por nombre
./conductor.sh --step 9
./conductor.sh --step postgresql
# Usar otro fichero de respuestas
./conductor.sh --responses /path/to/responses.ini
# Listar los pasos disponibles
./conductor.sh list-steps
Cómo funciona
El asistente avanza por una secuencia de pasos. En cada uno:
- Muestra un formulario con los datos que necesita.
- Al confirmar, lo sustituye por un resumen con el log en directo de lo que está instalando o configurando.
- Al terminar, pasa automáticamente al siguiente.
Algunos pasos (Pi-hole y PiVPN) usan instaladores externos que necesitan el control total de la terminal. En esos casos Conductor se cierra, muestra el comando a ejecutar y, al volver a lanzarlo, detecta la instalación y continúa donde lo dejó.
responses.ini
Tras cada paso, Conductor guarda los datos introducidos y el estado de cada paso en el fichero responses.ini. Esto permite:
- Continuar tras una interrupción (un reinicio, un error o simplemente cerrar el asistente) sin volver a introducir nada.
- Instalaciones desatendidas: un
responses.inirellenado previamente permite desplegar la misma configuración (o una similar) en otro servidor sin interacción. Cada paso marcacompleted = trueal terminar, yskip = truesi se ha omitido.
El formato de cada sección está documentado junto a cada paso en el repositorio, por ejemplo 01-ubuntu/responses.md.
responses.ini guarda todos los valores en texto plano, contraseñas incluidas. Protege sus permisos y no lo dejes al alcance de nadie.
Servidores ya desplegados
Un paso terminado queda cerrado: al volver a ejecutar Conductor en un servidor completo, va directo a la pantalla final. Cuando una nueva versión añade o cambia un sub-paso, este aparece como pendiente (por ser nuevo o por tener una revisión superior a la registrada) y el asistente se abre directamente en él, saltando el resto. No hace falta editar responses.ini a mano.
Copias de seguridad
Las rutas de las copias de seguridad nunca se preguntan, se derivan automáticamente:
{punto de montaje NFS}/{hostname}/{servicio}
El punto de montaje viene del paso Core Scripts y el hostname del paso Ubuntu. Así, el backup de Nagios del servidor sora acaba en /mnt/backup/sora/nagios.
Documentación
- Arquitectura: punto de entrada, flujo y fichero de configuración.
- Funcionalidades: todos los pasos, con enlaces a su detalle y su formato de respuestas.
- Comandos de Nagios: todos los comandos y plantillas que el Nagios de Conductor ofrece a otros sistemas.