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å
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å
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: allaanvä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å
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: allaanvä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å
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å
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å
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