Ansible

Installera flera paket enkelt på CentOS med Ansible

Installera flera paket enkelt på CentOS med Ansible
På Ansible kan du använda dnf eller yum modul för att installera programvarupaket på CentOS- eller RHEL-värdar. Som standard installerar dessa moduler bara ett enda programvarupaket. Du kan använda dnf eller yum modul flera gånger i din Ansible-spelbok för att installera så många programvarupaket som du vill. Detta är dock inte det mest effektiva sättet att göra detta, eftersom det kommer att finnas mycket kodupprepning som vi skulle vilja undvika om möjligt. Lyckligtvis kan vi använda loopar för att enkelt installera så många programvarupaket som vi vill utan någon kodupprepning.

Den här artikeln visar hur du installerar flera mjukvarupaket på CentOS / RHEL-värdar med Ansible loop. Så, låt oss komma igång.

Förutsättningar

Om du vill prova exemplen i den här artikeln,
1) Du måste ha Ansible installerat på din dator.
2) Du måste ha minst en CentOS / RHEL 7- eller 8-värd konfigurerad för Ansible-automatisering.

Det finns många artiklar om LinuxHint tillägnad Installera Ansible och konfigurera värdar för Ansible-automatisering. Du kan kolla in dessa om det behövs.

Ställa in en projektkatalog

Innan vi går vidare skapar vi en projektkatalog, bara för att hålla saker och ting organiserade.

För att skapa projektkatalogen centos-pkg / och alla nödvändiga underkataloger (i din nuvarande arbetskatalog), kör följande kommando:

$ mkdir -pv centos-pkg / playbooks

När projektkatalogen har skapats navigerar du till projektkatalogen enligt följande:

$ cd centos-pkg /

Skapa sedan en värdar inventeringsfil, enligt följande:

$ nano värdar

Lägg till värdens IP- eller DNS-namn (vm3.nodekite.com, i mitt fall) av dina CentOS / RHEL-värdar i inventeringsfilen (en värd per rad).

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Skapa en Ansible-konfigurationsfil ansible.cfg i din projektkatalog, enligt följande:

$ nano ansible.cfg

Skriv sedan följande rader i ansible.cfg fil.

[standard]
inventering = värdar
host_key_checking = Falskt

När du är klar sparar du ansible.cfg fil genom att trycka på + X, följd av Y och .

Försök att pinga alla CentOS / RHEL-värdar som du har lagt till i din värdar inventeringsfil, enligt följande:

$ ansible all -u ansible -m ping

Som du kan se är min CentOS 8-värd tillgänglig.

Installera ett enda programvarupaket

Detta avsnitt visar hur du installerar ett enda programvarupaket med dnf eller yum modul av Ansible på dina CentOS / RHEL-värdar.

Skapa först den nya spelboken install_package.yaml i spelböcker / katalog, enligt följande:

$ nano playbooks / install_package.yaml

Skriv sedan in följande rader i install_package.yaml fil.

- värdar: alla
användare: ansible
bli sann
uppgifter:
- namn: Installera httpd-paketet
dnf:
namn: httpd
tillstånd: närvarande
update_cache: True

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Här har jag bara lagt till en uppgift, Installera httpd-paketet. Syftet med denna uppgift är att installera httpd paket på CentOS / RHEL 8.

CentOS / RHEL 7 använder inte dnf pakethanteraren använder den yum pakethanteraren. Så, om du använder CentOS / RHEL 7, ändra dnf till yum, som markerat i skärmdumpen nedan. Inga andra ändringar krävs.

De namn alternativet används för att berätta för dnf eller yum modul namnet på paketet du försöker installera. I det här fallet blir det httpd paket.

De stat alternativet används för att berätta för dnf eller yum modulera åtgärden (i.e. installera, uppgradera, ta bort) det bör ta på det givna paketet. I det här fallet är åtgärden närvarande.

De stödda värdena för stat alternativ är:

närvarande - installerar paketet om det inte redan är installerat.

senast - kommer att installera paketet om det inte redan är installerat; om den redan är installerad kommer modulen att söka efter uppdateringar; Om en uppdaterad version av paketet är tillgänglig kommer den att installera den nya versionen.

frånvarande - tar bort paketet om det är installerat.

Om den update_cache alternativet är inställt på Sann, DNF / YUM-paketets förvarscache kommer att uppdateras innan paketet installeras.

Springa det install_package.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / install_package.yaml

Som du kan se, spelboken install_package.yaml sprang framgångsrikt.

Som du kan se httpd paketet är installerat på min CentOS 8-värd, som jag har lagt till på min värdar inventeringsfil.

$ sudo dnf list installerad | grep httpd

Om du använder CentOS / RHEL 7, använd yum pakethanteraren istället för dnf pakethanteraren för att verifiera om paketet är installerat.

$ sudo yum list installerad | grep httpd

Installera flera mjukvarupaket med Loop med_items

Föregående avsnitt i den här artikeln visade dig hur du installerar ett enda programvarupaket på din CentOS / RHEL-värd med Ansible dnf/yum modul. Det här avsnittet visar hur du installerar flera programvarupaket på dina CentOS / RHEL-värdar med Ansible med_objekt slinga.

Skapa först den nya spelboken install_packages.yaml, som följer:

$ nano playbooks / install_packages.yaml

Skriv följande rader i install_packages.yaml fil.

- värdar: alla
användare: ansible
bli sann
uppgifter:
- namn: Installera alla paket
dnf:
namn: 'item'
tillstånd: närvarande
update_cache: True
med_objekt:
httpd
php
vsftpd

När du är klar trycker du på + X, följd av Y och , för att spara install_packages.yaml fil.

Här har jag definierat paketnamnen (httpd, php, vsftpd) som jag vill installera med med_objekt slinga.

Jag har ersatt paketnamnet med variabeln Artikel. De Artikel variabel uppdateras med paketnamnet i varje iteration.

Springa det install_packages.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / install_packages.yaml

Som du kan se, spelboken install_packages.yaml sprang framgångsrikt.

De httpd, php, och vsftpd paket installeras på min CentOS 8-värd, som du kan se på skärmdumpen nedan.

$ sudo dnf list installerad | grep httpd
$ sudo dnf list installerad | grep php
$ sudo dnf list installerad | grep vsftpd

Installera flera programvarupaket med loop-loop

Från Ansible 2.5, är det rekommenderade sättet att använda loopar i din spelbok genom att använda slinga nyckelord, istället för med_objekt nyckelord. Det är därför du såg ett varningsmeddelande när jag körde install_packages.yaml i den tidigare delen av den här artikeln.

Arbeta med öglor med hjälp av slinga nyckelord är mycket enkelt.

Öppna först spelboken install_packages.yaml (från föregående exempel), enligt följande:

$ nano playbooks / install_packages.yaml

I install_packages.yaml playbook, ersätt bara termen med_objekt med termen slinga, som markerat i skärmdumpen nedan. Du behöver inte ändra något annat.

När du är klar trycker du på + X, följd av Y och , för att spara install_packages.yaml fil.

Springa det install_packages.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / install_packages.yaml

Som du kan se uppgiften Installera alla paket sprang dnf/yum modul tre gånger totalt; en gång för varje slinga Artikel.

De httpd, php, och vsftpd paket installeras på min CentOS 8-värd, som du kan se på skärmdumpen nedan.

$ sudo dnf list installerad | grep httpd
$ sudo dnf list installerad | grep php
$ sudo dnf list installerad | grep vsftpd

Installera flera programvarupaket med Array Syntax

Tidigare avsnitt i den här artikeln visade hur du använder med_objekt och slinga slingor i Ansible för att installera flera programvarupaket på CentOS / RHEL 7 eller 8, utan att någon kod upprepas. Detta avsnitt visar hur du gör samma sak med en enklare array-syntax.

Öppna först install_packages.yaml spelbok, enligt följande:

$ nano playbooks / install_packages.yaml

Ta bort med_objekt eller slinga avsnitt från uppgiften och ändra namn alternativ till ['httpd', 'php', vsftpd '], som markerat i skärmdumpen nedan.

När du är klar trycker du på + X, följd av Y och , för att spara install_packages.yaml spelbok.

Här citerade varje sträng inom hakparenteserna ([]) är ett arrayelement (mjukvarupaketets namn, i mitt fall). Varje arrayelement ska separeras med ett komma (,). Du kan lägga till så många matriselement som du vill. Jag har bara lagt till tre element, httpd, php, och vsftpd.

Springa det install_packages.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / install_packages.yaml

Som du kan se, programvarupaket httpd, php, och vsftpd är installerade på min CentOS 8-värd.

$ sudo dnf list installerad | grep httpd
$ sudo dnf list installerad | grep php
$ sudo dnf list installerad | grep vsftpd

Slutsats

Denna artikel visade hur du använder med_objekt och slinga loopar, liksom Array-syntax, med Ansible yum/dnf modul för att installera flera programvarupaket på dina CentOS / RHEL 7- eller 8-värdar.

Mer information finns i den officiella Ansible-dokumentationen.

[1] Officiell dokumentation av Ansible loopar
[2] Officiell dokumentation av Ansible with_items
[3] Officiell dokumentation av Ansible dnf-modulen
[4] Officiell dokumentation av Ansible yum-modul

Mus WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
Om du vill förbättra standardfunktionerna för din muspekare, använd freeware WinMouse. Det lägger till fler funktioner som hjälper dig att få ut det m...
Mus Mus vänsterklicka på knappen fungerar inte på Windows 10
Mus vänsterklicka på knappen fungerar inte på Windows 10
Om du använder en dedikerad mus med din bärbara dator eller stationära dator men musens vänsterklick-knapp fungerar inte på Windows 10/8/7 av någon an...
Mus Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Om du upptäcker att muspekaren hoppar eller rör sig på egen hand, automatiskt, slumpmässigt när du skriver in Windows-bärbar dator eller dator, kan nå...