Automatiseren van RHEL-Registratie en Abonnement
Categories:
Projecten: c2platform/rws/ansible-gis
Automatiseer de registratie en afmelding van RHEL-machines met Vagrant in combinatie met de
vagrant-registration
plugin, wat de ontwikkelingsworkflows vereenvoudigt.
Probleem
Toegang tot Red Hat-diensten en software repositories is essentieel voor ontwikkelaars die werken in Red Hat Enterprise Linux (RHEL)-omgevingen. Het automatiseren van systeemregistratie en abonnementsbeheer is cruciaal om ononderbroken toegang tot deze bronnen te waarborgen.
Context
In RHEL 9-omgevingen is een efficiënt mechanisme nodig om systemen te registreren bij Red Hat Subscription Management (RHSM) en abonnementen te beheren. Dit stelt ontwikkelaars in staat om softwarepakketten te installeren, updates te ontvangen en Red Hat-diensten naadloos te gebruiken. Door gebruik te maken van het Red Hat Developer-abonnement kunnen ontwikkelaars RHEL 9-systeemregistraties kosteneffectief beheren in ontwikkelomgevingen. Dit omvat het registreren van het systeem bij RHSM en het koppelen van een ontwikkelaarsabonnement om toegang tot essentiële Red Hat-software repositories en -diensten vrij te geven.
Het onderstaande voorbeeld illustreert het registreren van een RHEL 9-systeem en het beheren van abonnementen met terminalcommando’s:
subscription-manager register --username <gebruikersnaam>
subscription-manager attach
In de context van de ontwikkelingsworkflows van het C2 Platform (zie Ontwikkelomgeving ), worden omgevingen continu opnieuw aangemaakt. Bij het werken aan uitdagende automatiseringsopdrachten die geavanceerde Ansible-engineering vereisen, kan dit meer dan 15 keer per dag gebeuren. Zelfs bij eenvoudigere projecten is het opnieuw aanmaken van omgevingen een standaardworkflow. Als best practice moet je, voordat je wijzigingen commit en pusht, deze testen vanaf een schone basislijn—door terug te keren naar een snapshot of een nieuwe VM aan te maken—in plaats van een gewijzigde VM te gebruiken waarmee je hebt gewerkt.
Dit kan tot op zekere hoogte worden verzacht door snapshots te gebruiken, wat eenvoudig is met Vagrant (zie Vagrant ), een kernonderdeel van de ontwikkelingsaanpak van het C2 Platform.
Zonder het automatiseren van abonnementsbeheer verstoren deze frequente recreaties de ontwikkelingsworkflow, wat de productiviteit en efficiëntie vermindert. Daarom is het in bijna alle gevallen essentieel om een Red Hat developer-account te verkrijgen om deze mogelijkheid te ontgrendelen bij het gebruik van RHEL-gebaseerde systemen.
Oplossing
Om een volledig geautomatiseerd proces te bereiken dat naadloos integreert met Vagrant-gebaseerde
ontwikkelingsworkflows, gebruik je de Vagrant-plugin
vagrant-registration
.
Gecombineerd met een aangepast Vagrantfile
stelt dit Ansible-engineers in staat om te werken
zonder handmatig abonnementsbeheer te hoeven afhandelen.
Voorbeelden en implementatie
Met het Rijkswaterstaat (RWS)-project als voorbeeld, bevat de implementatie in het
project
c2platform/rws/ansible-gis
een aangepast Vagrantfile
:
Het
Vagrantfile
bevat een codefragment voor de registratieafhandeling dat gebruikmaakt van je Red Hat Developer accountgegevens met de variabelenRHEL_DEV_ACCOUNT
enRHEL_DEV_SECRET
.29 if bx['registration'] || false 30 if ENV['RHEL_DEV_ACCOUNT'].nil? || ENV['RHEL_DEV_SECRET'].nil? 31 abort 'ERROR: Please set both RHEL_DEV_ACCOUNT and RHEL_DEV_SECRET ' \ 32 'environment variables. Refer to ' \ 33 'https://c2platform.org/docs/guidelines/dev/rhel for more info.' 34 end 35 cfg.registration.skip = false 36 cfg.registration.unregister_on_halt = false 37 cfg.registration.username = ENV['RHEL_DEV_ACCOUNT'] 38 cfg.registration.password = ENV['RHEL_DEV_SECRET'] 39 end
Het
Vagrantfile.yml
bevat eenrhel9
boxdefinitie met eenregistration
vlag. Dit geeft aan dat systemen op basis van deze box automatisch worden geregistreerd bij creatie en afgemeld bij verwijdering.344 rhel8: 345 name: generic/rhel8 346 version: 4.3.12 347 registration: true 348 rhel9: 349 name: generic/rhel9 350 version: 4.3.12 351 registration: true
De documentatie van het C2 Platform bevat een handleiding voor Vagrant-plugins, inclusief
de vagrant-registration
plugin. Zie
Een Ontwikkelomgeving Opzetten op Ubuntu 22
en
specifiek het gedeelte over
Installeer Vagrant en Vagrant Plugins
.
De setup is volledig geautomatiseerd. Als je deze inloggegevens niet configureert, zal Vagrant
je vragen om te bevestigen of je wilt registreren (y/n). Als je ja kiest, vraagt het om je
inloggegevens. Je kunt ook kiezen om niet te registreren, in welk geval je de mogelijkheid
mist om toegang te krijgen tot RHEL-bronnen. Als je geen Red Hat developer-account hebt of de
omgevingsvariabelen RHEL_DEV_ACCOUNT
en RHEL_DEV_SECRET
niet configureert, biedt dit
prompting-proces nog steeds een handiger manier om te registreren dan commando’s handmatig
uit te voeren in de VM.
Deze setup garandeert dat systemen die worden opgestart met de rhel9-configuratie automatisch registratie en afmelding afhandelen, wat de ontwikkeling stroomlijnt en ervoor zorgt dat aan Red Hat’s abonnementsbeheer wordt voldaan.
Registratie en Afmelding in Actie:
De volgende terminaluitvoer demonstreert het automatische registratie- en afmeldproces bij het beheren van een Vagrant-box:
- Bij het uitvoeren van
vagrant up
, registreert het systeem zich bij Red Hat, gefaciliteerd door de vagrant-registration plugin. - Het uitvoeren van
vagrant destroy
activeert de afmelding van het systeem, waardoor een schone status behouden blijft en geen onnodige abonnementen actief blijven.
Let op de onderstaande regels met “Registering box with vagrant-registration…”
en “Unregistering box with vagrant-registration…”Laat zien
[:ansible-gis]└2 master(+15/-1,+1/-1) ± vagrant up gsd-ansible-repo --no-provision
Bringing machine 'gsd-ansible-repo' up with 'virtualbox' provider...
==> gsd-ansible-repo: Importing base box 'generic/rhel9'...
==> gsd-ansible-repo: Matching MAC address for NAT networking...
==> gsd-ansible-repo: Checking if box 'generic/rhel9' version '4.3.12' is up to date...
==> gsd-ansible-repo: Setting the name of the VM: ansible-gis_gsd-ansible-repo_1708418067798_69697
==> gsd-ansible-repo: Fixed port collision for 22 => 2222. Now on port 2206.
==> gsd-ansible-repo: Clearing any previously set network interfaces...
==> gsd-ansible-repo: Preparing network interfaces based on configuration...
gsd-ansible-repo: Adapter 1: nat
gsd-ansible-repo: Adapter 2: hostonly
==> gsd-ansible-repo: Forwarding ports...
gsd-ansible-repo: 22 (guest) => 2206 (host) (adapter 1)
==> gsd-ansible-repo: Running 'pre-boot' VM customizations...
==> gsd-ansible-repo: Booting VM...
==> gsd-ansible-repo: Waiting for machine to boot. This may take a few minutes...
gsd-ansible-repo: SSH address: 127.0.0.1:2206
gsd-ansible-repo: SSH username: vagrant
gsd-ansible-repo: SSH auth method: private key
==> gsd-ansible-repo: Machine booted and ready!
==> gsd-ansible-repo: Registering box with vagrant-registration...
==> gsd-ansible-repo: Checking for guest additions in VM...
==> gsd-ansible-repo: Setting hostname...
==> gsd-ansible-repo: Configuring and enabling network interfaces...
==> gsd-ansible-repo: Mounting shared folders...
gsd-ansible-repo: /vagrant => /home/ostraaten/git/gitlab/c2/ansible-gis
gsd-ansible-repo: /arcgis-software-repo => /software/projects/rws
gsd-ansible-repo: /ansible-dev-collections => /home/ostraaten/git/gitlab/c2/ansible-dev-collections
==> gsd-ansible-repo: Machine not provisioned because `--no-provision` is specified.
θ66° [:ansible-gis]└2 master(+15/-1,+1/-1) ±
[:ansible-gis]└2 master(+15/-1,+1/-1) ± vagrant destroy gsd-ansible-repo
==> gsd-ansible-repo: Unregistering box with vagrant-registration...
gsd-ansible-repo: Are you sure you want to destroy the 'gsd-ansible-repo' VM? [y/N] y
==> gsd-ansible-repo: Forcing shutdown of VM...
==> gsd-ansible-repo: Destroying VM and associated drives...
[:ansible-gis]└2 master(+15/-1,+1/-1) ±
De volgende twee handleidingen maken gebruik van Red Hat-boxen met automatische registratie:
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.