Infrastructure as Code
Servere, der kan bygges op igen på en eftermiddag
Hele opsætningen skrevet ned som filer, så den kan genskabes præcist og aldrig kun findes i ét hoved.
Udvalgte resultater, der demonstrerer denne ydelse.
- Har forbedret datasikkerheden ved at implementere 1.000 RBAC‑regler for udviklere, applikationsinstanser, PostgreSQL, MS SQL og andre Linux‑servere for at forhindre uautoriseret adgang; dokumenteret med Ansible‑automatisering.
- Har provisioneret Azure‑infrastruktur som kode med Bicep — Container Apps, PostgreSQL Flexible Server, Front Door/WAF og netværk — på tværs af udviklings-, staging- og produktionsmiljøer.
- Har konfigureret opbevaring af databasebackups som infrastructure‑as‑code, gennemgået genopretningsberedskabet og dokumenteret restore‑proceduren — med de resterende huller navngivet frem for fundet under en hændelse.
- Har bygget virksomhedens egen infrastruktur som 19 Ansible‑playbooks og 34 roller fordelt på 12.065 linjer YAML, der konvergerer en levende vært til en erklæret tilstand med hvert play idempotent.
- Har kørt hele virksomheden på én vært med 512 MB og én kerne — en git‑forge, en webserver til syv domæner, Tor, to servere til alternative protokoller, backup og udelukkelse af indtrængen — ved at behandle 464 MB brugbar hukommelse som den bindende arkitektoniske begrænsning.
- Har hærdet SSH til 24 hævdede direktiver med validering i tre trin — kandidatfilen, den samlede konfiguration og dernæst dæmonens egen tilbagelæsning — efter at tilbagelæsningen fangede den kørende server i stilhed at tilsidesætte to af de fireogtyve.
- Har bygget krypteret backup uden for værten på restic med opbevaringsbeskæring, et integritetstjek og en månedlig automatiseret gendannelsesøvelse, og har derefter auditeret gendannelsespositionen og skrevet hullerne ned frem for at lade dem blive fundet under en hændelse.
- Har bygget dødmandsknap‑monitorering, der kun pinger, mens hukommelse og disk er sunde, så en svækket vært udløser en alarm ved at gå tavs — og fangede seks variabelnavne, der sagde "free", hvor tjekket korrekt målte "available", en størrelsesorden fra hinanden på en boks med 464 MB.
- Har fået check mode til at sige sandheden på hele platformen efter at have fundet seks sonder, der traf beslutning på en værdi, værten aldrig gav, fordi Ansibles command‑modul melder succes under --check, mens det springer kommandoen helt over.
- Har tilføjet et preflight‑play, der kører den samme kode som konvergensen mod operatørens lokale hemmeligheder på omkring et sekund, efter at en halvt anvendt produktionskørsel døde på sin niende opgave med swap‑indstillingerne allerede skrevet til den levende vært.
- Har afstemt en DNS‑zone med 20 poster deklarativt mod Cloudflares API med separate indgange til audit og BIND‑eksport, og har slået CDN‑proxyen fra igen af hensyn til privatlivet efter at have bygget den.
- Har skåret systemd‑sandkassens eksponering ned på hver eneste unit, platformen selv installerer — en dødmandsknap‑tjeneste fra 9,6 UNSAFE til 1,5, en internetvendt git‑forge fra 8,3 EXPOSED til 1,5 — og har tilføjet et parsertjek ved konvergens efter at have fundet et stavefejlsbehæftet direktiv ignoreret i stilhed i tre unit‑skabeloner.
- Har udrullet virksomhedens egen git‑forge på Soft Serve, privat som udgangspunkt og uden webpanel, med SSH‑porten bundet til loopback bag en jump‑vært, og har gjort landingssiden foran den til et build‑artefakt af hovedsitet frem for en håndholdt kopi.
- Har automatiseret provisioneringen af en anden server hos en anden cloududbyder og oprettet firewallen før maskinen, så den fødes bag en, med begge udbyderes firewalls skrevet direkte mod deres REST‑API'er for at undgå en tredjepartssamling.
- Har delt de fire hemmeligheder, der hører til den enkelte vært, efter at have fastslået, at to værter, der deler én dødmandsknap, alarmerer mindre end to knapper, ikke mere, og at en delt backup‑adgangssætning gør to værter til ét repository.
- Har prøvekørt CI‑hooken på forge‑siden og har fundet to fejl, der ikke kunne nås ved at læse filen: en fallback, der lagde et uopløseligt argument på hookens input, og gits egen miljøvariabel, der fulgte gaten ind i checkouten og gjorde 19 tests røde.