Vagrant-project

Een directorystructuur die Vagrant gebruikt om virtuele ontwikkelomgevingen te definiëren en te beheren, met integratie van Ansible in het C2 Platform voor lokale simulatie van infrastructuur.

Een Vagrant-project is een directorystructuur die Vagrant gebruikt om virtuele ontwikkelomgevingen te definiëren en te beheren. Het bevat een Vagrantfile voor de declaratieve configuratie van virtuele machines, netwerken en provisioning-stappen. Het Ansible-mirror-inventarisproject is een uitstekend voorbeeld van een Vagrant-project.

In de context van het C2 Platform integreert een Vagrant-project met Ansible-automatisering om echte infrastructuur lokaal te simuleren. Het is ontworpen voor het testen van Ansible-content ( Ansible-collecties, Ansible-rol, enz.) en Ansible-mirror-inventarisproject. Dit bevordert consistentie en herhaalbaarheid in ontwikkelomgeving, waardoor Ansible engineer automatisering kunnen prototypen en valideren. De Ansible-content wordt vervolgens gepubliceerd naar Ansible Galaxy voor gebruik in automatisering over Nederlandse overheidsdomeinen en datacenters heen.

In de aanpak van het C2 Platform is een Vagrant-project altijd ook een Ansible-mirror-inventarisproject. Het gebruikt een generiek Vagrantfile aangevuld met een YAML-bestand Vagrantfile.yml, waarin de nodes, netwerken en andere configuraties van de ontwikkelomgeving worden gedefinieerd. Het YAML-bestand wordt gebruikt om een deel van de complexiteit te abstraheren die gepaard gaat met het configureren van een Vagrantfile voor systemen die uit vele nodes bestaan, inclusief meerdere LXD-containers en enkele VirtualBox-VM’s. Deze aanpak vereenvoudigt het beheer door configuratiegegevens te scheiden van de kernlogica van Vagrant, waardoor het eenvoudiger wordt om de omgeving te onderhouden en te schalen.

Voor een voorbeeld van een Vagrant-project, zie het inventarisproject RWS GIS Platform Ansible Mirror Inventory Project ( c2platform/rws/ansible-gis). Dit project bevat een Vagrantfile dat wordt vergezeld door een YAML-configuratiebestand Vagrantfile.yml.

Het aanmaken van een nieuwe node is zo eenvoudig als het kopiëren en aanpassen van een stukje YAML-code. In het fragment hieronder (regels 191-199) wordt node gsd-fme-core gedefinieerd. Dus het aanmaken van een nieuwe node in je omgeving is zo eenvoudig als het kopiëren van die regels en het aanbrengen van enkele wijzigingen, zoals een unieke naam, uniek IP-adres, enz., en het kiezen van een Vagrant box. Let bijvoorbeeld op dat de box voor deze node is geconfigureerd als win2022.

 Vagrantfile.yml

191  - name: fme-core
192    description: FME
193    box: win2022
194    ip-address: 1.1.8.106
195    memory: 4500
196    aliases:
197      - share.internal.c2platform.org
198      - gsd-fme-core.internal.c2platform.org
199      - gsd-fme-core.apps.c2platform.org
200    plays:
201      - gis/fme

In het fragment hieronder zien we enkele van de beschikbare Vagrant boxes. Bijvoorbeeld, gsd-fme-core gebruikt win2022, die is geconfigureerd voor sysprep (via de sleutel sysprep: true) en gebruikt WinRM voor communicatie (via de sleutel vm-communicator: winrm). RHEL 8 en 9 boxes zijn ook gedefinieerd, met registration: true om automatische registratie bij Red Hat te garanderen bij aanmaak en deregistratie bij vernietiging.

 Vagrantfile.yml

299boxes:  # https://app.vagrantup.com/c2platform/
300  ubuntu22-lxd:
301    name: c2platform/ubuntu-jammy
302    version: 0.1.0
303    provider: lxd
304  win2022:
305    name: c2platform/win2022
306    version: 0.1.0
307    sysprep: true
308    vm-communicator: winrm
309  rhel8:
310    name: generic/rhel8
311    version: 4.3.12
312    registration: true
313  rhel9:
314    name: generic/rhel9
315    version: 4.3.12
316    registration: true

Er zijn talloze optimalisaties en verbeteringen aangebracht aan de C2 Vagrant-project-setup door de jaren heen.

Aanvullende informatie