Ansible

Eenvoudig meerdere pakketten installeren op CentOS met Ansible

Eenvoudig meerdere pakketten installeren op CentOS met Ansible
Op Ansible kunt u de dnf of jammie module om softwarepakketten op CentOS- of RHEL-hosts te installeren. Standaard installeren deze modules slechts één softwarepakket. U kunt de dnf of jammie module meerdere keren in uw Ansible-playbook om zoveel softwarepakketten te installeren als u wilt. Dit is echter niet de meest efficiënte manier om dit te doen, omdat er veel codeherhaling zal zijn die we indien mogelijk willen vermijden. Gelukkig kunnen we loops gebruiken om eenvoudig zoveel softwarepakketten te installeren als we willen zonder enige herhaling van de code.

In dit artikel wordt uitgelegd hoe u meerdere softwarepakketten op CentOS/RHEL-hosts installeert met behulp van Ansible-lus. Dus laten we beginnen.

Vereisten

Als je de voorbeelden in dit artikel wilt uitproberen,
1) Je moet Ansible op je computer hebben geïnstalleerd.
2) U moet minimaal een CentOS/RHEL 7- of 8-host hebben geconfigureerd voor Ansible-automatisering.

Er zijn veel artikelen over LinuxHint gewijd aan het installeren van Ansible en het configureren van hosts voor Ansible-automatisering. U kunt deze indien nodig bekijken.

Een projectdirectory instellen

Voordat we verder gaan, zullen we een projectdirectory maken, gewoon om de zaken een beetje georganiseerd te houden.

De projectdirectory maken: centos-pkg/ en alle vereiste subdirectories (in uw huidige werkdirectory), voert u de volgende opdracht uit:

$ mkdir -pv centos-pkg/playbooks

Nadat de projectdirectory is gemaakt, navigeert u als volgt naar de projectdirectory:

$ cd centos-pkg/

Maak vervolgens een gastheren inventarisbestand, als volgt:

$ nano-hosts

Voeg de host-IP- of DNS-naam toe (vm3.nodekite.com, in mijn geval) van uw CentOS/RHEL-hosts in het inventarisbestand (één host per regel).

Als u klaar bent, slaat u het bestand op door op . te drukken + X, gevolgd door Y en .

Een Ansible-configuratiebestand maken weerbaar.cfg in uw projectdirectory, als volgt:

$ nano mogelijk.cfg

Typ vervolgens de volgende regels in de weerbaar.cfg het dossier.

[standaard]
inventaris           = hosts
host_key_checking   = False

Als u klaar bent, slaat u de weerbaar.cfg bestand door op te drukken + X, gevolgd door Y en .

Probeer alle CentOS/RHEL-hosts te pingen die je hebt toegevoegd in je added gastheren inventarisbestand, als volgt:

$ ansible all -u ansible -m ping

Zoals je kunt zien, is mijn CentOS 8-host toegankelijk.

Een enkel softwarepakket installeren

Dit gedeelte laat u zien hoe u een enkel softwarepakket installeert met behulp van de dnf of jammie module van Ansible op uw CentOS/RHEL-hosts.

Maak eerst het nieuwe playbook installeer pakket.yaml in de draaiboeken/ directory, als volgt:

$ nano playbooks/install_package.yaml

Typ vervolgens de volgende regels in de installeer pakket.yaml het dossier.

- hosts: alle
gebruiker: ansible
worden: True
taken:
- naam: httpd-pakket installeren
dnf:
naam: httpd
staat: aanwezig
update_cache: True

Als u klaar bent, slaat u het bestand op door op . te drukken + X, gevolgd door Y en .

Hier heb ik maar één taak toegevoegd, Installeer httpd-pakket. Het doel van deze taak is het installeren van de httpd pakket op CentOS/RHEL 8.

CentOS/RHEL 7 maakt geen gebruik van de dnf pakketbeheerder, het gebruikt de jammie pakket manager. Dus, als je CentOS/RHEL 7 gebruikt, verander dan dnf naar jammie, zoals aangegeven in de onderstaande schermafbeelding. Er zijn geen andere wijzigingen vereist.

De naam optie wordt gebruikt om de . te vertellen dnf of jammie module de naam van het pakket dat u probeert te installeren. In dit geval zal het de httpd pakket.

De staat optie wordt gebruikt om de . te vertellen dnf of jammie module de actie (i.e. installeren, upgraden, verwijderen) het zou het gegeven pakket moeten aannemen. In dit geval is de actie: Cadeau.

De ondersteunde waarden van de staat optie zijn:

Cadeau - zal het pakket installeren als het nog niet is geïnstalleerd.

laatste - zal het pakket installeren als het nog niet is geïnstalleerd; indien reeds geïnstalleerd, zal de module controleren op updates; als er een bijgewerkte versie van het pakket beschikbaar is, wordt de nieuwe versie geïnstalleerd.

afwezig - zal het pakket verwijderen als het is geïnstalleerd.

Als de update_cache optie is ingesteld op waar, de cache van de DNF/YUM-pakketrepository wordt bijgewerkt voordat het pakket wordt geïnstalleerd.

Voer de ... uit installeer pakket.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_package.yaml

Zoals je kunt zien, het speelboek installeer pakket.yaml succesvol verlopen.

Zoals je kunt zien, is de httpd pakket is geïnstalleerd op mijn CentOS 8-host, die ik heb toegevoegd op mijn gastheren inventarisbestand.

$ sudo dnf-lijst geïnstalleerd | grep httpd

Als u CentOS/RHEL 7 gebruikt, gebruikt u de jammie pakketbeheerder in plaats van de dnf pakketbeheerder om te controleren of het pakket is geïnstalleerd.

$ sudo yum lijst geïnstalleerd | grep httpd

Meerdere softwarepakketten installeren met behulp van de with_items Loop

In het vorige gedeelte van dit artikel werd uitgelegd hoe u een enkel softwarepakket op uw CentOS/RHEL-host installeert met behulp van de Ansible dnf/jammie module. In dit gedeelte wordt uitgelegd hoe u meerdere softwarepakketten op uw CentOS/RHEL-hosts installeert met behulp van de Ansible met_items lus.

Maak eerst het nieuwe playbook install_packages.yaml, als volgt:

$ nano playbooks/install_packages.yaml

Typ de volgende regels in de install_packages.yaml het dossier.

- hosts: alle
gebruiker: ansible
worden: True
taken:
- naam: Installeer alle pakketten
dnf:
naam: ' item '
staat: aanwezig
update_cache: True
met_items:
httpd
php
vsftpd

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden install_packages.yaml het dossier.

Hier heb ik de pakketnamen gedefinieerd (httpd, php, vsftpd) die ik wil installeren met met_items lus.

Ik heb de pakketnaam vervangen door de variabele item. De item variabele wordt bijgewerkt met de pakketnaam in elke iteratie.

Voer de ... uit install_packages.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_packages.yaml

Zoals je kunt zien, het speelboek install_packages.yaml succesvol verlopen.

De httpd, php, en vsftpd pakketten zijn geïnstalleerd op mijn CentOS 8-host, zoals je kunt zien in de onderstaande schermafbeelding.

$ sudo dnf-lijst geïnstalleerd | grep httpd
$ sudo dnf-lijst geïnstalleerd | grep php
$ sudo dnf-lijst geïnstalleerd | grep vsftpd

Meerdere softwarepakketten installeren met behulp van de loop Loop

Vanaf Ansible 2.5, is de aanbevolen manier om loops in je playbook te gebruiken de lus trefwoord, in plaats van de met_items trefwoord. Daarom zag je een waarschuwingsbericht toen ik de I install_packages.yaml playbook in het eerdere gedeelte van dit artikel.

Werken met lussen met de lus trefwoord is heel eenvoudig.

Open eerst het draaiboek install_packages.yaml (uit het vorige voorbeeld), als volgt:

$ nano playbooks/install_packages.yaml

In de install_packages.yaml playbook, vervang gewoon de term met_items met de term lus, zoals aangegeven in de onderstaande schermafbeelding. U hoeft verder niets te veranderen.

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden install_packages.yaml het dossier.

Voer de ... uit install_packages.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_packages.yaml

Zoals je kunt zien, is de taak Installeer alle pakketten liep de dnf/jammie module in totaal drie keer; eenmaal voor elke lus item.

De httpd, php, en vsftpd pakketten zijn geïnstalleerd op mijn CentOS 8-host, zoals je kunt zien in de onderstaande schermafbeelding.

$ sudo dnf-lijst geïnstalleerd | grep httpd
$ sudo dnf-lijst geïnstalleerd | grep php
$ sudo dnf-lijst geïnstalleerd | grep vsftpd

Meerdere softwarepakketten installeren met behulp van array-syntaxis

Eerdere delen van dit artikel hebben u laten zien hoe u de met_items en lus loops in Ansible om meerdere softwarepakketten op CentOS/RHEL 7 of 8 te installeren, zonder enige herhaling van code. In deze sectie wordt uitgelegd hoe u hetzelfde kunt doen met een eenvoudigere array-syntaxis.

Open eerst de install_packages.yaml draaiboek, als volgt:

$ nano playbooks/install_packages.yaml

Verwijder de met_items of lus sectie van de taak en verander de naam optie om ['httpd', 'php', vsftpd'], zoals aangegeven in de onderstaande schermafbeelding.

Als u klaar bent, drukt u op + X, gevolgd door Y en , om de te redden install_packages.yaml Speelboek.

Hier wordt elke geciteerde tekenreeks tussen vierkante haken ([]) is een array-element (in mijn geval de naam van het softwarepakket). Elk array-element moet worden gescheiden door een komma (,). U kunt zoveel array-elementen toevoegen als u wilt. Ik heb slechts drie elementen toegevoegd, httpd, php, en vsftpd.

Voer de ... uit install_packages.yaml draaiboek, als volgt:

$ ansible-playbook playbooks/install_packages.yaml

Zoals u kunt zien, zijn de softwarepakketten httpd, php, en vsftpd zijn geïnstalleerd op mijn CentOS 8-host.

$ sudo dnf-lijst geïnstalleerd | grep httpd
$ sudo dnf-lijst geïnstalleerd | grep php
$ sudo dnf-lijst geïnstalleerd | grep vsftpd

Conclusie

Dit artikel heeft u laten zien hoe u de met_items en lus loops, evenals de array-syntaxis, met de Ansible jammie/dnf module om meerdere softwarepakketten op uw CentOS/RHEL 7 of 8 hosts te installeren.

Raadpleeg de officiële Ansible-documentatie voor meer informatie.

[1] Officiële documentatie van Ansible-lussen
[2] Officiële documentatie van Ansible with_items
[3] Officiële documentatie van de Ansible dnf-module
[4] Officiële documentatie van de Ansible yum-module

Shadow of the Tomb Raider voor Linux-zelfstudie
Shadow of the Tomb Raider is de twaalfde toevoeging aan de Tomb Raider-serie - een actie-avonturengame-franchise gemaakt door Eidos Montreal. De game ...
Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...
Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...