Skip to main content

Introducció

Sora Conductor és un assistent de terminal, escrit en Python, que configura i desplega tots els serveis del servidor orquestrador: la primera màquina de la xarxa Sora i de la qual depenen totes les altres (DNS, base de dades, monitorització, còpies de seguretat, ...).

És el primer pas de tota la infraestructura. Serveis que al Rasp Project s'instal·laven seguint guies manuals, aquí es converteixen en un formulari que s'omple una vegada i es pot repetir en qualsevol servidor.

Requisits​

  • Ubuntu Server x64. Tots els paquets s'instal·len amb apt; altres distribucions basades en apt poden funcionar, però no estan provades.
  • Un usuari amb sudo sense contrasenya, o root.
  • Python 3.8 o superior. Si no existeix, l'script d'arrencada l'instal·la.

Execució​

El mètode més ràpid descarrega el projecte i llança l'assistent amb una única ordre, com a root:

sudo bash -c "$(curl -fsSL https://gitlab.com/api/v4/projects/ReiIzumi%2Fsora-conductor/repository/files/init-sora-conductor.sh/raw?ref=main)"

L'script instal·la git si cal, clona el repositori i executa conductor.sh, que detecta el sistema operatiu, comprova Python i pip, instal·la les dependències (Textual i Typer) i obre l'assistent.

Un cop descarregat, es pot tornar a llançar des de la carpeta del projecte:

# Assistent complet
./conductor.sh

# Un únic pas, per número o per nom
./conductor.sh --step 9
./conductor.sh --step postgresql

# Fer servir un altre fitxer de respostes
./conductor.sh --responses /path/to/responses.ini

# Llistar els passos disponibles
./conductor.sh list-steps

Com funciona​

L'assistent avança per una seqüència de passos. En cadascun:

  1. Mostra un formulari amb les dades que necessita.
  2. En confirmar, el substitueix per un resum amb el log en directe del que està instal·lant o configurant.
  3. En acabar, passa automàticament al següent.

Alguns passos (Pi-hole i PiVPN) fan servir instal·ladors externs que necessiten el control total de la terminal. En aquests casos Conductor es tanca, mostra l'ordre a executar i, en tornar-lo a llançar, detecta la instal·lació i continua on ho havia deixat.

responses.ini​

Després de cada pas, Conductor guarda les dades introduïdes i l'estat de cada pas al fitxer responses.ini. Això permet:

  • Continuar després d'una interrupció (un reinici, un error o simplement tancar l'assistent) sense tornar a introduir res.
  • Instal·lacions desateses: un responses.ini emplenat prèviament permet desplegar la mateixa configuració (o una de similar) en un altre servidor sense interacció. Cada pas marca completed = true en acabar, i skip = true si s'ha omès.

El format de cada secció està documentat al costat de cada pas al repositori, per exemple 01-ubuntu/responses.md.

perill

responses.ini guarda tots els valors en text pla, contrasenyes incloses. Protegeix-ne els permisos i no el deixis a l'abast de ningú.

Servidors ja desplegats​

Un pas acabat queda tancat: en tornar a executar Conductor en un servidor complet, va directament a la pantalla final. Quan una nova versió afegeix o canvia un subpas, aquest apareix com a pendent (per ser nou o per tenir una revisió superior a la registrada) i l'assistent s'obre directament en ell, saltant la resta. No cal editar responses.ini a mà.

Còpies de seguretat​

Les rutes de les còpies de seguretat no es pregunten mai, es deriven automàticament:

{punt de muntatge NFS}/{hostname}/{servei}

El punt de muntatge ve del pas Core Scripts i el hostname del pas Ubuntu. Així, el backup de Nagios del servidor sora acaba a /mnt/backup/sora/nagios.

Documentació​

  • Arquitectura: punt d'entrada, flux i fitxer de configuració.
  • Funcionalitats: tots els passos, amb enllaços al seu detall i al seu format de respostes.
  • Ordres de Nagios: totes les ordres i plantilles que el Nagios de Conductor ofereix a altres sistemes.