Els scripts d'aprovisionament que informen d'un error i continuen són pitjors que els scripts que no s'executen mai. La configuració del client toca claus protegides, una identitat a la passarel·la i un servei que potser ja està servint trànsit. Cadascun d'aquests elements necessita una condició d'aturada, i el script ha de saber a quina etapa ha arribat quan s'ha aturat.

Tracta-ho tot plegat com una transacció amb cinc punts de control, i fes que cada punt de control es negui a continuar per si sol.

Fixa les entrades abans de tocar el sistema de fitxers

Comença amb un contracte explícit: una identitat, una font de perfil, un propietari de servei previst. Verifica que el perfil existeix, que el certificat i la clau a què fa referència són llegibles i que el directori de destinació pertany al paquet esperat. Un camí que es resol no és prova que el material que hi ha darrere sigui complet.

Rebutja les variables buides aviat. Una $DEVICE no definida que s'expandeix a res converteix install -m 400 $KEY /etc/openvpn/client/ en una còpia adreçada a un directori, i la fallada arriba més tard com un servei que no pot llegir la seva clau.

Munta el conjunt de perfils en un directori de preparació

Construeix primer el conjunt complet en un lloc privat: perfil, CA, certificat de client, clau i qualsevol auxiliar que el perfil cridi. Copia amb install -m 400 -o root -g root perquè els permisos es fixin en crear-se i no després. Després revisa les referències dins del perfil, perquè una línia relativa ca o key es resol respecte del directori de treball de la unitat quan arrenca el servei. No s'ha d'escriure res al directori actiu fins que tot el conjunt validi.

Registra una empremta no secreta del que ha produït aquesta execució, per exemple sha256sum office.conf desat al costat d'una marca de versió. Aquest únic valor és el que permet a una reexecució distingir una actualització d'una no-operació.

Intercanvia atòmicament i conserva el conjunt anterior

Mou el conjunt preparat al seu lloc com una sola operació allà on el sistema de fitxers ho permeti, i conserva el conjunt anterior revisat sota un nom amb marca de temps. Una còpia parcial que deixa un perfil nou al costat d'una clau vella produeix un servei que s'autentica amb la identitat equivocada i no registra res útil sobre el motiu. Si l'intercanvi no pot ser atòmic, ordena els moviments perquè el perfil arribi l'últim.

Quan la destinació ja existeix, decideix explícitament si aquesta execució és una actualització, una reexecució idèntica o un conflicte amb el perfil d'un altre dispositiu. Sobreescriure en silenci un perfil que pertany a una altra identitat és com dues màquines acaben compartint un sol certificat. Refusa l'execució i anomena el propietari en conflicte.

Activa un sol propietari i demostra-ho

Tria un sol camí d'activació, o la instància de systemd o NetworkManager, i fes-lo servir de manera coherent. Engegar un procés openvpn no gestionat al costat d'una unitat habilitada dóna dos túnels, actualitzacions DNS competidores i cap resposta clara sobre a quin apunta una ordre d'aturada. Després de l'activació, comprova systemctl is-active openvpn-client@office, després la ruta al prefix remot i després resolvectl status per al resolutor que ha instal·lat el túnel. Acaba arribant a un recurs pel qual existeix el túnel.

Un procés en marxa i una icona verda a la safata són fets del procés, no proves que la identitat i la política de trànsit hagin sobreviscut al traspàs.

La reexecució i la retirada són fluxos de treball separats

Una segona execució hauria de convergir en els mateixos fitxers revisats i el mateix propietari, no crear un segon compte ni un segon dimoni. La retirada és un procediment propi: atura el propietari exacte, arxiva o esborra el perfil local segons la política i revoca la identitat a la passarel·la. Esborrar un fitxer de clau local no revoca una còpia que ja ha sortit de la màquina.

Mantingues un camí de recuperació que no depengui del túnel, com ara accés a la consola o una segona ruta de gestió. Un canvi d'aprovisionament que et deixa fora de la màquina és un canvi fallit encara que cada etapa hagi informat d'èxit.

El script que val la pena conservar és una transacció al voltant de la propietat i les proves. Una llista curta d'ordres de còpia privilegiades no és el mateix.

Articles relacionats