Referentie-implementatie

Een open-source, volledig functioneel voorbeeld van een systeem dat een gesloten-source configuratie weerspiegelt.

Inleiding

Een referentie-implementatie is een open-source, volledig functioneel voorbeeld van een systeem dat is ontworpen om een gesloten-source configuratie in een overheidsdomein of data center te weerspiegelen. Het maakt lokale uitrol op de machine van een ontwikkelaar mogelijk, waardoor snelle prototyping, testen en ontwikkeling in realistische omgevingen worden vergemakkelijkt. Dit concept biedt een praktische, herbruikbare blauwdruk die demonstreert hoe complexe systemen kunnen worden uitgerold en beheerd. Het zorgt voor afstemming met productie-achtige omstandigheden, terwijl het openheid en samenwerking bevordert.

In het C2-platform maakt een referentie-implementatie gebruik van een Ansible-mirror-inventarisproject om een geautomatiseerde, open-source replica van gesloten-source omgevingen te creëren. Het is een kernonderdeel van de ontwikkelomgeving, waar het wordt gebruikt om automatisering te ontwikkelen in de vorm van Ansible-content. Het automatiseert volledig de setup en provisioning met behulp van IaC-principes zoals GitOps en desired state configuration. Deze setup stelt Ansible engineers in staat om systemen lokaal te bouwen en te testen, in lijn met het Open, tenzij-principe. Het verhoogt de productiviteit, samenwerking en hergebruik door aanpasbare voorbeelden voor klantdomeinen aan te bieden. Ansible stuurt deze automatisering aan, repliceert doelarchitecturen en integreert beste praktijken voor schaalbaarheid, beveiliging en onderhoudbaarheid—waardoor een solide basis voor real-world aanpassingen wordt geboden. Het bevat ook Ansible-content, zoals Ansible-collecties en Ansible-rollen, om modulaire en herbruikbare automatisering te garanderen.

Kerncomponenten

Een referentie-implementatie in het C2-platform is een replica van een gesloten-source systeem dat lokaal draait. Het wordt gecreëerd met behulp van de ontwikkelomgeving en een Ansible-mirror-inventarisproject. Het Ansible-mirror-inventarisproject weerspiegelt de inventaris in het klantdomein en bevat de volledige desired state voor het replicasysteem.

De integratie van Vagrant en Ansible vormt een complete oplossing. Vagrant zet de virtuele infrastructuur op, terwijl Ansible software installeert en beheert op de nodes. Bijvoorbeeld, in het GIS-platformvoorbeeld omvat dit de uitrol van ArcGIS Enterprise Web Adaptor, Portal, Server, Datastore, FME en meer. Dit modulaire ontwerp zorgt ervoor dat de referentie-implementatie eenvoudig kan worden uitgebreid of aangepast aan specifieke behoeften, terwijl de trouw aan de weerspiegelde productieomgeving behouden blijft.

Voor meer informatie, zie deze bronnen:

  • Ontwikkelomgeving: Een lokale open-source ontwikkelomgeving stimuleert Ansible-automatisering door maximale flexibiliteit en productiviteit te bieden voor snelle iteratie, testen en onafhankelijkheid van externe infrastructuurteams of zelfs andere engineers in het team vanwege gedeelde omgevingen.
  • Ansible-referentie-implementatieproject: Verken de integratie van Ansible en Vagrant in een referentie-implementatieproject, dat essentieel is voor het ontwikkelen en nabootsen van real-world infrastructuur lokaal binnen het C2-framework.

Hoe het werkt

Zoals geïllustreerd in het diagram hieronder, omvat de referentie-implementatie samenwerking tussen een Ansible engineer (links) en een Ansible operator (rechts).

Rol van de Ansible engineer

De Ansible engineer onderhoudt een open-source Ansible-mirror-inventarisproject dat een gesloten-source Ansible-inventarisproject bij RWS weerspiegelt. Ze gebruiken deze mirror om een replicasysteem lokaal te provisioneren, met behulp van Ansible gecombineerd met Vagrant in de ontwikkelomgeving. De engineer ontwikkelt ook Ansible-content, zoals Ansible-collecties en Ansible-rollen, die ze publiceren op Ansible Galaxy voor delen.

Rol van de Ansible operator

Aan de andere kant beheert de Ansible operator de desired state in het gesloten-source Ansible-inventarisproject en specificeert welke Ansible-content (collecties en versies) moet worden gebruikt. Ansible handhabt het downloaden van Ansible-content van Ansible Galaxy.1

De operator gebruikt dit Ansible-inventarisproject om lifecycle management (LCM) uit te voeren en het daadwerkelijke GIS-platformsysteem in het klantdomein te onderhouden. De operator rolt uit en beheert GIS-platformservices met behulp van Ansible.

Gebruik van de mirror als referentie

De Ansible operator gebruikt het Ansible-mirror-inventarisproject als referentie, profiterend van de bewezen code, patronen, oplossingen en recepten. Het biedt een werkend voorbeeld van hoe Ansible-content is geconfigureerd of kan worden gebruikt. Operators kunnen ook verwijzen naar de bijbehorende documentatie op deze website, die uitlegt hoe het voorbeeld te gebruiken. Voor een voorbeeld van dergelijke documentatie, zie:

Ansible engineering in klantdomeinen

Meestal kan Ansible engineering van Ansible-content ook plaatsvinden binnen het klantdomein, zoals het geval was voor het RWS-project. Dit wordt echter niet weergegeven in het diagram omdat het RWS-domein alleen een pseudo-ontwikkelomgeving heeft. Idealiter wordt het meeste Ansible engineering-werk gedaan in het C2-platformdomein. Dit omvat typisch het ontwikkelen van Ansible-content en omvat altijd desired state configuration in het Ansible-mirror-inventarisproject. De mirror fungeert als een voorbeeld dat geheel of gedeeltelijk kan worden gekopieerd naar het Ansible-inventarisproject van het klantdomein. Als Ansible-content wordt ontwikkeld, configureert de Ansible operator (ook in het Ansible-inventarisproject) de Ansible-content (collecties en versies) die Ansible moet gebruiken.

Kernattributen

Hier zijn de belangrijkste kenmerken van een referentie-implementatie:

  • Uitgebreide implementatie: Omvat alle configuraties, instellingen en onderlinge afhankelijkheden voor naadloze werking, waarbij het beoogde systeem volledig wordt weerspiegeld. Dit omvat gedetailleerde behandeling van afhankelijkheden, netwerken en datastromen om operationele pariteit te garanderen.
  • Pariteit met productie: Bijvoorbeeld, de referentie-implementatie van het GIS-platform emuleert nauwkeurig de configuratie bij Rijkswaterstaat (RWS), in lijn met real-world omgevingen terwijl het zich aanpast aan lokale beperkingen.
  • Gedetailleerde documentatie en beste praktijken: Omvat uitgebreide Ansible-documentatie die doel, configuraties, beste praktijken en beheer uitlegt. Dit dient als een belangrijke bron voor teams, met voorbeelden van gebruik en tips voor probleemoplossing.
  • Training en consistentie: Fungeert als een hulpmiddel voor training, helpt teams om efficiënte uitrol en beheer te leren. Het zorgt ook voor consistentie in de infrastructuur, waardoor fouten worden verminderd door gestandaardiseerde patronen.

In de context van Ansible en Vagrant omvat het alle componenten van een Ansible-inventarisproject voor configuratie, samen met een Vagrantfile voor VM-setup. Deze elementen zijn goed gedocumenteerd en getest om het doelsysteem nauwkeurig te vertegenwoordigen, waardoor iteratieve verbeteringen en bijdragen van de community worden vergemakkelijkt.

Doel en voordelen

Een referentie-implementatie biedt een volledig functionele replica van een productiesysteem, waardoor efficiënt en consistent infrastructuurbeheer wordt gewaarborgd terwijl het nauw aansluit bij real-world uitrollen. Dit is essentieel voor complexe projecten, zoals het GIS-platform bij Rijkswaterstaat (RWS), waar nauwkeurigheid en betrouwbaarheid cruciaal zijn. Het overbrugt de kloof tussen ontwikkeling en productie door een testbare, aanpasbare basis aan te bieden die uitrolrisico’s vermindert.

Het demonstreert praktisch softwaregebruik en configuratie, en biedt een flexibel startpunt voor aanpassingen. Door gebruik te maken van open-source componenten zoals Ansible-collecties, kunnen organisaties bouwen op gedeeld werk, waardoor ontwikkeling wordt versneld, uniforme uitrollen worden gewaarborgd en samenwerking wordt bevorderd. Deze aanpak minimaliseert herwerk en verbetert kennisoverdracht tussen teams.

Vagrant wordt niet gebruikt in overheidsdomeinen of datacenters, hoewel het potentieel zou kunnen worden aangepast vanwege de ondersteuning voor VMware-provisioners, die daar vaak worden gebruikt. Overheidsdomeinen bevatten wel een ontwikkelomgeving, maar dit is vaak een suboptimale variant die wordt aangeduid als een pseudo-ontwikkelomgeving vanwege beperkingen zoals beveiliging en resourcebeperkingen.

Aanvullende informatie

Voor verdere referentie, verken de volgende informatie:

  • Ontwikkelomgeving: Een lokale open-source ontwikkelomgeving stimuleert Ansible-automatisering door maximale flexibiliteit en productiviteit te bieden voor snelle iteratie, testen en onafhankelijkheid van externe infrastructuurteams of zelfs andere engineers in het team vanwege gedeelde omgevingen.
  • Ansible-referentie-implementatieproject: Verken de integratie van Ansible en Vagrant in een referentie-implementatieproject, dat essentieel is voor het ontwikkelen en nabootsen van real-world infrastructuur lokaal binnen het C2-framework.
  • Ansible-mirror-inventarisproject: Een gestructureerde verzameling bestanden die worden gebruikt voor het beheren van hosts en configuraties. Het omvat doorgaans inventarisbestanden, playbooks, hostvariabelen, groepsvariabelen en Ansible Vault-bestanden.

  1. In de context van Nederlandse overheidsorganisaties wordt dit bijna altijd gedaan binnen een enterprise-editie van Ansible genaamd Ansible Automation Platform (AAP). ↩︎