Saltar al contenido principal

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 en apt pueden funcionar, pero no están probadas.
  • Un usuario con sudo sin contraseña, o root.
  • 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:

  1. Muestra un formulario con los datos que necesita.
  2. Al confirmar, lo sustituye por un resumen con el log en directo de lo que está instalando o configurando.
  3. 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.ini rellenado previamente permite desplegar la misma configuración (o una similar) en otro servidor sin interacción. Cada paso marca completed = true al terminar, y skip = true si se ha omitido.

El formato de cada sección está documentado junto a cada paso en el repositorio, por ejemplo 01-ubuntu/responses.md.

peligro

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.