Ontwerp van PHX S3-gebaseerde Ansible Software Repository
Categories:
Projecten:
c2platform/phx/ansible
Inleiding
Dit ontwerpdocument schetst de architectuur en implementatie van een Ansible Software Repository voor het PHX-project. De oplossing maakt gebruik van vRA S3-buckets als opslagbackend, omdat er geen alternatieve servers zoals Nexus beschikbaar zijn. Het combineert S3-opslag met een generieke, herbruikbare Ansible-rol om veilige en efficiënte software-downloads te faciliteren voor lifecycle management (LCM) en onderhoudstaken. De Ansible-rol voor downloads ondersteunt directe downloads en S3-downloads out-of-the-box.
Doelen en scope
Momenteel worden de software-artefacten die Ansible nodig heeft opgeslagen op een Windows-share. Het doel is om een betere oplossing te bieden voor het voorzien van Ansible-gebaseerde automatisering met de benodigde software-artefacten. Het moet even goed werken voor Linux- en Windows-hosts, beter schalen dan een Windows-share en het meest gangbare downloadprotocol gebruiken, namelijk HTTP.
De primaire doelen van dit ontwerp zijn om een robuuste, veilige methode te bieden voor het beheren van software-artefacten in de air-gapped PHX-omgeving, waardoor geautomatiseerde LCM-processen mogelijk zijn zonder externe afhankelijkheden. De scope omvat opslag van binaries voor Linux- en Windows-systemen, integratie met bestaande Ansible-workflows en uitbreiding van rollen voor bredere compatibiliteit. Belangrijke voordelen zijn verminderde handmatige interventie, verbeterde idempotentie voor herhaalde operaties en verbeterde beveiliging door gecontroleerde toegangsmechanismen.
Aannames en beperkingen
Dit ontwerp gaat uit van een volledig air-gapped opzet zonder internettoegang, de afwezigheid van dedicated repository servers zoals Nexus en afhankelijkheid van vRA-beheerde S3-buckets. Het voldoet aan de Nederlandse overheidsbeveiligingsbeleidsregels, zoals die geschetst in de PoLP en dataproductienormen, en zorgt ervoor dat alle operaties voldoen aan interne richtlijnen voor automatisering in gevoelige omgevingen. Verwijzingen naar gerelateerde normen omvatten Ansible best practices voor idempotente configuraties en vRA-integratieprotocollen.
Vereisten
Functionele vereisten
- Software-artefacten (binaries, installers) opslaan en beheren in een air-gapped omgeving met behulp van vRA S3-buckets.
- Ondersteuning voor downloads op zowel Linux- als Windows-doelen via Ansible.
- Een generiek, herbruikbaar mechanisme bieden voor S3-interacties, waarbij bestaande
rollen zoals
c2platform.wincore.downloadsworden uitgebreid met Linux- en S3-ondersteuning. - Idempotente operaties garanderen in lijn met desired state configuration.
Niet-functionele vereisten
- Beveiliging: Gebruik presigned URL’s voor tijdelijke, veilige toegang.
- Compatibiliteit: Werken met standaard Ansible-modules zonder AWS-afhankelijkheden op Windows.
- Schaalbaarheid: Een groot aantal applicaties (~200) efficiënt afhandelen.
- Omgevingsbeperkingen: Werken zonder internettoegang of extra repository servers zoals Nexus.
Ontwerpoverzicht
Het ontwerp maakt gebruik van vRA S3-buckets als kernopslag voor software-artefacten.
Downloads worden beheerd via de c2platform.core.downloads
Ansible-rol, die de Amazon AWS
Ansible-collecties (via de
s3_object
module) op een Linux-delegatieserver gebruikt om presigned
URL’s te genereren. Deze URL’s maken eenvoudige, afhankelijkheidsvrije downloads op doelservers
mogelijk met modules zoals get_url of win_get_url.
Deze opzet breidt de Windows-only c2platform.wincore.downloads-rol uit met
ondersteuning voor Linux en S3, en zorgt voor een uniforme, herbruikbare aanpak voor
Ansible operations in air-gapped omgevingen.
High-level architectuurdiagram

Belangrijke componenten
S3-buckets (via vRA)
Veilige, lokale opslag voor software-artefacten in het air-gapped PHX-domein.
Wat betreft flexibiliteit,
Ansible staat flexibele beleidsregels toe voor
het aantal buckets, zoals één bucket per
Ansible-inventarisproject,
per applicatie, voor de hele organisatie, etc.
Verantwoordelijkheden omvatten versiebeheer, toegangscontrole en metadata-tagging voor
artefacten. Afhankelijkheden: vRA API voor provisioning; geconfigureerd met SSE
versleuteling. Configuratie: Buckets worden genoemd naar applicatie (bijv.
phx-app-binaries), met lifecycle-beleidsregels voor retentie.
Delegatieserver
Een RHEL Linux-host uitgerust met boto3 en botocore bibliotheken om S3-interacties
af te handelen en presigned URL’s te genereren. Verantwoordelijkheden: Uitvoeren van gedelegeerde
taken, beheren van AWS-collectiemodules. Afhankelijkheden: Python 3.x, AWS SDK;
netwerktoegang tot vRA S3-eindpunten. Configuratie: Installeren via Ansible-rol,
zorgen voor IAM-achtige credentials voor vRA-authenticatie.
Doelservers
Linux- of Windows-hosts die downloads uitvoeren met standaard Ansible-modules. Verantwoordelijkheden: Bestanden ophalen via presigned URL’s, integriteit verifiëren (bijv. checksums). Afhankelijkheden: Geen buiten kern-Ansible; ondersteunt offline uitvoering. Configuratie: Gedefinieerd in inventaris met groep/host-variabelen voor downloadpaden.
Ansible-downloadsrol
Kernlogica voor downloads, met ondersteuning voor S3 en directe URL’s, met idempotentie voor desired state configuration. Verantwoordelijkheden: URL-generatie orkestreren, delegatie afhandelen, checksum-validatie garanderen. Afhankelijkheden: AWS-collectie.
Downloadproces
Het downloadproces wordt georkestreerd door de downloadsrol.
Hieronder volgt een gedetailleerd volgdiagram dat de workflow illustreert.
Processtappen
- Delegeer S3-interactie naar de Linux-delegatieserver met
delegate_toin de Ansible-taak. - Genereer een presigned URL met de AWS
Ansible-collecties
s3_object-module met parameters zoalsbucket,objectenexpiry. - Geef de URL door aan de doelserver voor download via
get_url(Linux) ofwin_get_url(Windows), inclusief checksum-validatie voor idempotentie. - Bevestig download en handel idempotentie af door bestandsexistentie en hash te controleren voordat opnieuw wordt gedownload.
Overwogen alternatieven
Verschillende opties werden geëvalueerd voor de PHX-softwareopslagplaats, waarbij S3 via vRA werd geselecteerd vanwege de balans tussen beveiliging, eenvoud en afstemming met bestaande infrastructuur.
- Nexus Repository: Voordelen: Robuust artefactbeheer, versiebeheer en zoekfunctionaliteit. Nadelen: Vereist extra serveruitrol, niet beschikbaar in air-gapped PHX-opzet, hoge onderhoudsoverhead. Afgewezen vanwege omgevingsbeperkingen en gebrek aan resources, zoals bevestigd in PHX-prototypes die uitroluitdagingen toonden.
- Directe URL-downloads: Voordelen: Eenvoudig, geen delegatie nodig. Nadelen: Minder veilig zonder tijdelijke toegang, blootstelling van eindpunten voor onbepaalde tijd, moeilijker te beheren in air-gapped scenario’s. Gekozen als fallback maar niet primair vanwege beveiligingsrisico’s; evaluaties benadrukten kwetsbaarheid voor ongeautoriseerde toegang.
- Aangepaste scripts: Voordelen: Op maat gemaakte controle. Nadelen: Slechte onderhoudbaarheid, ontbreekt idempotentie, dupliceert inspanning vergeleken met Ansible-rollen. Vermeden ten gunste van herbruikbare Ansible-rollen voor betere schaalbaarheid, aangezien PHX-testen toonden dat scripts vatbaar zijn voor fouten in multi-platformomgevingen.
S3 met Ansible werd gekozen vanwege de integratie met vRA, ondersteuning voor presigned URL’s die de beveiliging verbeteren en hergebruik van bestaande rollen, waardoor ontwikkelingstijd wordt verminderd op basis van PHX-pilot-evaluaties.
Toekomstige verbeteringen
Potentiële verbeteringen omvatten:
- Geautomatiseerd uploaden van artefacten naar S3 met Ansible en AWS-modules.
Aanvullende informatie
- Creëren en testen van S3-service: Richt een op MinIO gebaseerde S3-service in een lokale ontwikkelomgeving in en test deze met behulp van Ansible-plays om buckets aan te maken, bestanden te uploaden en te downloaden.
- Ontwerpen van een Flexibel Software Repositorium voor Ansible: Dit document presenteert de benadering van RWS voor het beheren van softwaredownloads met behulp van Ansible, met nadruk op de
c2platform.wincore.downloadAnsible-rol. Deze rol is veelzijdig, ondersteunend zowel een eenvoudig op Apache2 gebaseerd repositorium als meer geavanceerde setups zoals Sonatype Nexus Repository Manager. - scripts - scripts
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.