Denne artikkelen viser deg hvordan du installerer flere programvarepakker på CentOS / RHEL-verter ved hjelp av Ansible loop. Så la oss komme i gang.
Forutsetninger
Hvis du vil prøve eksemplene i denne artikkelen,
1) Du må ha Ansible installert på datamaskinen din.
2) Du må ha minst en CentOS / RHEL 7- eller 8-vert konfigurert for Ansible-automatisering.
Det er mange artikler om LinuxHint dedikert til å installere Ansible og konfigurere verter for Ansible automatisering. Du kan sjekke ut disse om nødvendig.
Sette opp en prosjektkatalog
Før vi går videre, vil vi lage en prosjektkatalog, bare for å holde ting litt organisert.
Å lage prosjektkatalogen centos-pkg / og alle nødvendige underkataloger (i din nåværende arbeidskatalog), kjør følgende kommando:
$ mkdir -pv centos-pkg / playbooks
Når prosjektkatalogen er opprettet, navigerer du til prosjektkatalogen, som følger:
$ cd centos-pkg /
Deretter oppretter du en verter inventarfil, som følger:
$ nano verter
Legg til verts-IP- eller DNS-navn (vm3.nodekite.com, i mitt tilfelle) av CentOS / RHEL-vertene i lagerfilen (en vert per linje).
Når du er ferdig, lagrer du filen ved å trykke på
Opprett en Ansible-konfigurasjonsfil ansible.cfg i prosjektkatalogen din, som følger:
$ nano ansible.cfg
Skriv deretter inn følgende linjer i ansible.cfg fil.
[standard]inventar = verter
host_key_checking = Usann
Når du er ferdig, lagrer du ansible.cfg filen ved å trykke på
Prøv å pinge alle CentOS / RHEL-vertene du har lagt til i din verter inventarfil, som følger:
$ ansible all -u ansible -m ping
Som du kan se, er CentOS 8-verten min tilgjengelig.
Installere en enkelt programvarepakke
Denne delen viser deg hvordan du installerer en enkelt programvarepakke ved hjelp av dnf eller yum modul av Ansible på CentOS / RHEL-vertene.
Først oppretter du den nye spillboken install_package.yaml i lekebøker / katalog, som følger:
$ nano playbooks / install_package.yaml
Deretter skriver du inn følgende linjer i install_package.yaml fil.
- verter: allebruker: ansible
bli: Sant
oppgaver:
- navn: Installer httpd-pakken
dnf:
navn: httpd
tilstand: til stede
update_cache: Sant
Når du er ferdig, lagrer du filen ved å trykke på
Her har jeg bare lagt til en oppgave, Installer httpd-pakken. Formålet med denne oppgaven er å installere httpd pakke på CentOS / RHEL 8.
CentOS / RHEL 7 bruker ikke dnf pakkeleder, bruker den yum pakkeleder. Så hvis du bruker CentOS / RHEL 7, må du endre dnf til yum, som markert i skjermbildet nedenfor. Ingen andre endringer er nødvendige.
De Navn alternativet brukes til å fortelle dnf eller yum modul navnet på pakken du prøver å installere. I dette tilfellet vil det være httpd pakke.
De stat alternativet brukes til å fortelle dnf eller yum moduler handlingen (i.e. installere, oppgradere, fjerne) det skal ta på den gitte pakken. I dette tilfellet er handlingen tilstede.
De støttede verdiene til stat alternativet er:
tilstede - vil installere pakken hvis den ikke allerede er installert.
siste - vil installere pakken hvis den ikke allerede er installert; hvis den allerede er installert, vil modulen se etter oppdateringer; Hvis en oppdatert versjon av pakken er tilgjengelig, vil den installere den nye versjonen.
fraværende - fjerner pakken hvis den er installert.
Hvis den update_cache alternativet er satt til ekte, DNF / YUM-pakkeoppbevaringsbufferen oppdateres før pakken installeres.
Kjør install_package.yaml spillbok, som følger:
$ ansible-playbook playbooks / install_package.yaml
Som du kan se, playbook install_package.yaml løp vellykket.
Som du kan se, er httpd pakken er installert på min CentOS 8-vert, som jeg har lagt til på min verter inventarfil.
$ sudo dnf-listen er installert | grep httpd
Hvis du bruker CentOS / RHEL 7, bruk yum pakkeleder i stedet for dnf pakkebehandling for å verifisere om pakken er installert.
$ sudo yum-listen er installert | grep httpd
Installere flere programvarepakker ved hjelp av with_items Loop
Den forrige delen av denne artikkelen viste deg hvordan du installerer en enkelt programvarepakke på din CentOS / RHEL-vert ved hjelp av Ansible dnf/yum modul. Denne delen viser deg hvordan du installerer flere programvarepakker på CentOS / RHEL-vertene ved hjelp av Ansible med_elementer Løkke.
Først oppretter du den nye spillboken install_packages.yaml, som følger:
$ nano playbooks / install_packages.yaml
Skriv inn følgende linjer i install_packages.yaml fil.
- verter: allebruker: ansible
bli: Sant
oppgaver:
- navn: Installer alle pakkene
dnf:
navn: 'item'
tilstand: til stede
update_cache: Sant
med_elementer:
httpd
php
vsftpd
Når du er ferdig, trykker du på
Her har jeg definert pakkenavnene (httpd, php, vsftpd) som jeg vil installere ved hjelp av med_elementer Løkke.
Jeg har erstattet pakkenavnet med variabelen punkt. De punkt variabel vil bli oppdatert med pakkenavnet i hver iterasjon.
Kjør install_packages.yaml spillbok, som følger:
$ ansible-playbook playbooks / install_packages.yaml
Som du kan se, playbook install_packages.yaml løp vellykket.
De httpd, php, og vsftpd pakker er installert på min CentOS 8-vert, som du kan se på skjermbildet nedenfor.
$ sudo dnf-listen er installert | grep httpd$ sudo dnf-listen er installert | grep php
$ sudo dnf-listen er installert | grep vsftpd
Installere flere programvarepakker ved hjelp av loop loop
Starter fra Ansible 2.5, er den anbefalte måten å bruke løkker i spillboken din på Løkke nøkkelord, i stedet for med_elementer nøkkelord. Derfor så du en advarsel når jeg kjørte install_packages.yaml spillbok i den tidligere delen av denne artikkelen.
Arbeider med løkker ved hjelp av Løkke nøkkelord er veldig enkelt.
Først åpner du lekeboken install_packages.yaml (fra forrige eksempel), som følger:
$ nano playbooks / install_packages.yaml
I install_packages.yaml playbook, bare erstatt begrepet med_elementer med begrepet Løkke, som markert i skjermbildet nedenfor. Du trenger ikke endre noe annet.
Når du er ferdig, trykker du på
Kjør install_packages.yaml spillbok, som følger:
$ ansible-playbook playbooks / install_packages.yaml
Som du kan se, oppgaven Installer alle pakkene kjørte dnf/yum modul totalt tre ganger; en gang for hver løkke punkt.
De httpd, php, og vsftpd pakker er installert på min CentOS 8-vert, som du kan se på skjermbildet nedenfor.
$ sudo dnf-listen er installert | grep httpd$ sudo dnf-listen er installert | grep php
$ sudo dnf-listen er installert | grep vsftpd
Installere flere programvarepakker ved hjelp av Array Syntax
Tidligere deler av denne artikkelen viste deg hvordan du bruker med_elementer og Løkke sløyfer i Ansible for å installere flere programvarepakker på CentOS / RHEL 7 eller 8, uten noen repetisjon av kode. Denne delen vil vise deg hvordan du gjør det samme med en enklere matrisesyntaks.
Først åpner du install_packages.yaml spillbok, som følger:
$ nano playbooks / install_packages.yaml
Fjern med_elementer eller Løkke delen fra oppgaven og endre Navn alternativ til ['httpd', 'php', vsftpd '], som markert i skjermbildet nedenfor.
Når du er ferdig, trykker du på
Her siterer hver sitert streng innenfor de firkantede parentesene ([]) er et arrayelement (navnet på programvarepakken, i mitt tilfelle). Hvert matriseelement skal være atskilt med komma (,). Du kan legge til så mange matriseelementer som du ønsker. Jeg har bare lagt til tre elementer, httpd, php, og vsftpd.
Kjør install_packages.yaml spillbok, som følger:
$ ansible-playbook playbooks / install_packages.yaml
Som du kan se, programvarepakkene httpd, php, og vsftpd er installert på min CentOS 8-vert.
$ sudo dnf-listen er installert | grep httpd$ sudo dnf-listen er installert | grep php
$ sudo dnf-listen er installert | grep vsftpd
Konklusjon
Denne artikkelen viste deg hvordan du bruker med_elementer og Løkke sløyfer, så vel som Array-syntaksen, med Ansible yum/dnf modul for å installere flere programvarepakker på CentOS / RHEL 7 eller 8 vertene.
For mer informasjon, sjekk den offisielle Ansible-dokumentasjonen.
[1] Offisiell dokumentasjon av Ansible loops
[2] Offisiell dokumentasjon av Ansible with_items
[3] Offisiell dokumentasjon av Ansible dnf-modul
[4] Offisiell dokumentasjon av Ansible yum-modul