GitOps Pipeline voor een Execution Environment (EE) met Ansible Collections
Categories:
Projecten:
c2platform/rws/ansible-gis
,
c2platform/ansible-collection-core
,
c2platform/ansible-collection-mw
,
c2platform/rws/ansible-execution-environment
,
c2platform/ansible-collection-mgmt
Introductie
Bij gebruik van het Ansible Automation Platform (AAP) zijn er drie strategieën voor het beheren van Ansible-collecties:
- Verwerk collecties in de EE.
- Haal collecties op met behulp van requirements.yml1.
- Een combinatie van beide.
Elke aanpak heeft zijn voor- en nadelen. Een belangrijk nadeel van het gebruik van een EE is dat de EE en zijn versie extern zijn gedefinieerd in AAP, waardoor een pure GitOps-benadering wordt voorkomen. Deze handleiding beschrijft hoe je een AAP Workflow en een Ansible Job Template gebruikt om AAP te configureren zodat een specifieke EE-versie wordt gebruikt voordat andere Job Templates worden uitgevoerd. Het Job Template maakt gebruik van de Ansible-rol c2platform.mgmt.awx om de EE-versie te beheren. Red Hat raadt aan om alleen de EE te gebruiken om prestatieredenen2.
Collectie Strategieën
Gebruik alleen het bestand requirements.yml
Dit is eenvoudig en flexibel, geschikt aan het begin van een project wanneer veel updates aan collecties worden gedaan. Het nadeel is langere jobtijden omdat collecties telkens weer worden opgehaald.
---
collections:
   - name: c2platform.core
      version: 1.0.21
   - name: https://gitlab.com/c2platform/rws/ansible-collection-wincore.git
      type: git
      version: master
Toon Diagram

Gebruik alleen de EE
Jobs worden sneller uitgevoerd op AWX. Het nadeel is de behoefte om nieuwe versies van de collectie en EE vrij te geven en handmatig de nieuwe EE-versie in AWX te configureren3.
Toon Diagram

Gebruik zowel de EE als de requirements.yml
Voeg community-collecties toe aan de EE en gebruik requirements.yml voor regelmatig bijgewerkte collecties.
Een nadeel van het toevoegen van collecties aan de EE is dat het een DTAP-promotiemodel in Git ingewikkelder maakt. Dit kan worden opgelost door een workflow in AWX in te richten die de juiste EE-versie configureert.
Vereisten
- Zorg ervoor dat gsd-awx1actief is. Raadpleeg Stel de Automation Controller (AWX) in met behulp van Ansible .
- Stel SSH-verbindingen in als je Ansible-plays uitvoert zonder Vagrant. Raadpleeg Ansible gebruiken zonder Vagrant .
Wijzig de EE
Dit gedeelte laat zien hoe je de EE in AAP kunt wijzigen in een workflow job, zodat de nieuwe EE beschikbaar wordt voor jobs die daarna worden uitgevoerd.
- In het project ansible-gis, schakel over naar dedevelopmentbranch en bewerkgroup_vars/awx/awx.yml. Definieergs_ee_imagesals volgt:Verwijder of schakel de regel metgs_ee_images: default: registry.gitlab.com/c2platform/rws/ansible-execution-environment:0.1.18 development: quay.io/ansible/awx-ee:24.4.0developmentuit, commit en push terug naar de development branch.
- Navigeer naar https://awx.c2platform.org/#/execution_environments 
. Controleer of quay.io/ansible/awx-ee:24.4.0de EE is.
- Navigeer naar https://awx.c2platform.org/#/templates 
en klik op de Visualizer link van
gsd-awx-collections-workflow. Dit toont een workflow met vijf nodes.
- Start de workflow.
- Wanneer de workflow is voltooid, controleer of gsd-collections1quay.io/ansible/awx-ee:24.4.0toont engsd-collections2registry.gitlab.com/c2platform/rws/ansible-execution-environment:0.1.18.
Dit toont aan dat we de EE in ons DTAP-promotiemodel kunnen opnemen op een vergelijkbare manier als we het bestand requirements.yml gebruiken door een workflow in te richten die een taak zoals gsd-awx-ee omvat om de EE voor de omgeving te beheren.
Promoveer de EE
Dit deel laat zien hoe we wijzigingen, inclusief de EE, kunnen promoten van development naar test.
- Maak de configuratie in AWX voor de testomgeving met behulp van nodegst-awx14:export PLAY=plays/mgmt/awx_config.yml ansible-playbook $PLAY -i hosts.ini --limit=gst-awx1Let op:Ansible commando’s rechtstreeks uitvoeren werkt alleen als je de nodige SSH configuratie voor hebt ingesteld. Raadpleeg Ansible gebruiken zonder Vagrant voor meer informatie.
- Gebruik de AWX webinterface en start gst-awx-collections-workflow.
- Controleer na voltooiing of er geen verschil is tussen collecties in
gst-collections1engst-collections2.
- In de developmentbranch, wijzig je het standaardbeeld naar0.1.19. Commit en push.gs_ee_images: default: registry.gitlab.com/c2platform/rws/ansible-execution-environment:0.1.19 development: quay.io/ansible/awx-ee:24.4.0
- Voeg wijzigingen samen naar de testbranch en startgst-awx-collections-workflow.
- Controleer na voltooiing de verschillen tussen de outputs van gst-collections1engst-collections2.
Review
In het Ansible Inventory project
c2platform/rws/ansible-gis
:
- De play plays/mgmt/awx.yml, die Ansible rollen toont die gebruikt worden om degsd-awx1node te creëren.
- Bestanden binnen group_vars/awx. Deze bestanden bevatten configuratie.
- Het bestand Vagrantfile.yml, dat de Vagrant LXD machine definieert.
De Ansible rol c2platform.mgmt.awx in de Ansible Management Collectie
c2platform/ansible-collection-mgmt
. Deze rol gebruikt
modules uit de awx.awx collectie om AWX te configureren (job templates,
workflows).
De Ansible rollen c2platform.mw.microk8s en c2platform.mw.kubernetes in de
Ansible Middleware collectie
c2platform/ansible-collection-mw
. De eerste rol
creëert een Kubernetes instantie; de tweede installeert AWX op het cluster.
Tips
Als je experimenteert of ontwikkelt met AWX configuratie, kun je tags gebruiken om de provisioning te versnellen:
export PLAY=plays/mgmt/awx_config.yml
ansible-playbook $PLAY -i hosts.ini --limit=gsd-awx1 --tags secrets,awx_workflow_job_template,awx_workflow_job_template_node
Je kunt ook tags gebruiken bij gebruik van Vagrant:
export PLAY=plays/mgmt/awx_config.yml
TAGS=secrets,awx_workflow_job_template,awx_workflow_job_template_node vagrant provision gsd-awx1
Notities
- Het requirements bestand moet worden opgeslagen in de map - collections, zoals het geval is in het- ansible-gisproject. ↩︎
- Er is geen officiële bron voor deze positie. Dit is gecommuniceerd door een Red Hat consultant aan RWS nadat er problemen waren gemeld over de tijd die het kost om Ansible-collecties op te halen van Galaxy en Ansible Automation Hub op de locatie van RWS. ↩︎ 
- Althans, dit is de huidige opzet van het project. Het is mogelijk om de GitLab CI/CD-pijplijn voor de EE te wijzigen om een - latestversie te publiceren, niet gebaseerd op vrijgegeven Galaxy-collecties, maar door direct collecties uit de Git-repository master branch te halen. Met behulp van webhooks zouden wijzigingen in collecties de pijplijn triggeren om een nieuwe- latestversie te produceren. In AWX kan deze laatste versie dan worden geconfigureerd voor gebruik. ↩︎
- De node - gst-awx1is geen normale Vagrant machine; het is slechts een alias voor- gsd-awx1. In- hosts.inidefiniëren we het als een aparte node binnen de- testomgeving zodat we AWX configuratie voor deze omgeving kunnen creëren. Om deze reden kunnen we ook- gst-awx1niet beheren met Vagrant; het bestaat niet voor Vagrant maar alleen voor Ansible. ↩︎
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.