Een Raspberry Pi VPN-apparaat herbouwen zonder de sleutel te kopiëren
Een image is één van vier invoer. Verklaar de configuratie, houd applicatiegegevens herstelbaar en geef elk board zijn eigen identiteit voordat het live gaat.
Eén keer opstarten vanaf een image maakt van een Pi nog geen herbouwbaar apparaat. Nodig is een kleine set invoer die je opnieuw kunt toepassen: een onderhouden basis, een verklaarde configuratie, de persistente gegevens van de applicatie en een apparaatidentiteit die alleen bij dat board hoort. Mis je de laatste, dan wordt elke vervanging een kloon van een inloggegeven.
De stappen hieronder zijn een werkvolgorde, geen toolaanbeveling. Elk configuratiesysteem dat ze kan uitdrukken, voldoet.
Noem eerst de vier soorten invoer
De basisimage en de pakketten bepalen het besturingssysteem, de architectuur en waar updates vandaan komen, en een imagebouwer helpt alleen als de tool die hij noemt nog voor jouw release wordt onderhouden. De verklaarde configuratie is het deel dat een mens beoordeelt: netwerkrollen, service-instellingen en de levenscyclusacties die elke service nodig heeft. Persistente applicatiegegevens zijn alles wat de service niet opnieuw kan genereren, en de locatie en back-upmethode horen bij die applicatie, niet bij de image. Apparaatidentiteiten en geheimen zijn de vierde invoer, en juist die vergeet men wanneer een werkende kaart wordt gekloond.
Schrijf de vier lijsten voordat je iets herbouwt. Een lijst met een lege regel is een beslissing die je nog niet hebt genomen.
Houd geheimen buiten de repository en zeg waar ze leven
Een repository is een goede plek voor beoordeelde sjablonen en niet-geheime configuratie, en een slechte plek voor privésleutels van VPN, herbruikbare beheerdersgegevens en diagnose-archieven. Als een geheim op het apparaat moet bestaan, leg dan vast waar het vandaan komt, wie het mag lezen en hoe het roteert. Een sleutel die alleen op één SD-kaart leeft, is een enkel storingspunt, terwijl een sleutel die naar elk board is gekopieerd een vlootbreed inloggegeven zonder eigenaar is. Geen van beide is een herstelplan.
De test is simpel: als de repository morgen lekt, wat wint een aanvaller dan? Sjablonen en topologienotities overleven. Een werkende identiteit niet.
Laat automatisering bezitten wat ze opnieuw kan uitvoeren
Het model van Ansible houdt een inventaris van beheerde nodes apart van plays, taken, rollen en handlers die afgaan wanneer een taak een wijziging meldt. Gebruik die structuur om elke service één configuratie-eigenaar te geven in plaats van een shellgeschiedenis opnieuw af te spelen. Geef de voorkeur aan bewerkingen die veilig twee keer kunnen worden uitgevoerd, en beslis bewust hoe een gewijzigd bestand het draaiende proces bereikt. Een taak die verzekert dat een service is gestart, zorgt er niet noodzakelijk voor dat die een configuratie herlaadt die je net hebt herschreven.
Scheid ook de fasen van het beheer. Opstartconnectiviteit, routineconfiguratie en VPN-afhankelijk beheer zijn drie verschillende vensters, en het derde kan je eigen toegang wegnemen als de herbouw het netwerk eronder reset. Houd een onafhankelijke weg naar binnen.
Herstel gegevens en identiteit met opzet
Containervolumes blijven onafhankelijk van de levenscyclus van de container bestaan, terwijl de schrijfbare laag in een container dat niet doet, waardoor een container opnieuw maken uit zijn image niet de toestand herstelt die de applicatie gebruikte, zoals de volumedocumentatie beschrijft. Leg de volumes, bind-mounts en externe diensten vast waarvan het apparaat afhankelijk is, en gebruik het eigen back-up- en herstelproces van de applicatie. Een container die zonder fout start, is geen bewijs dat de database en de bestanden overeenkomen.
Beslis voor identiteit of je hetzelfde apparaat herstelt of een vervanging registreert, want dat zijn verschillende bewerkingen met verschillende opruiming.
Verzoen de toegang van de oude peer voordat je een identiteit elders activeert, en test daarna pas het herbouwde apparaat in een geïsoleerde omgeving of herstelomgeving. Controleer de vereiste gegevens, de juiste identiteit, een updatepad met een eigenaar en het beoogde netwerkbeleid.
Een opstartbare image is één van vier invoer, en het is de gemakkelijkste om te reproduceren.