Installere flere pakker enkelt på centOS ved hjelp av Ansible

Installere flere pakker enkelt på centOS ved hjelp av Ansible
På Ansible kan du bruke dnf eller yum Modul for å installere programvarepakker på centOS eller RHEL -verter. Som standard installerer disse modulene bare en enkelt programvarepakke. Du kan bruke dnf eller yum Modul flere ganger i Ansible Playbook for å installere så mange programvarepakker du vil. Skjønt, dette er ikke den mest effektive måten å gjøre dette på, da det vil være mye kode repetisjon som vi ønsker å unngå om mulig. Heldigvis kan vi bruke løkker for å enkelt installere så mange programvarepakker som vi vil uten noen kode repetisjon.

Denne artikkelen vil vise 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 ansettbar automatisering.

Det er mange artikler om Linuxhint dedikert til å installere Ansible og konfigurere verter for Ansible Automation. Du kan sjekke ut disse om nødvendig.

Sette opp en prosjektkatalog

Før vi flytter videre, oppretter vi en prosjektkatalog, bare for å holde ting litt organisert.

For å opprette 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/

Neste, lage en verter Lagerfil, som følger:

$ Nano -verter

Legg til verten IP eller DNS -navn (VM3.Nodekite.com, I mitt tilfelle) av CentOS/RHEL -vertene dine i varelagerfilen (en vert per linje).

Når du er ferdig, lagre filen ved å trykke på + X, etterfulgt av Y og .

Opprett en Ansible konfigurasjonsfil Ansible.CFG I prosjektkatalogen din, som følger:

$ Nano Ansible.CFG

Skriv deretter følgende linjer i Ansible.CFG fil.

[standardverdier]
Inventory = verter
host_key_checking = falsk

Når du er ferdig, kan du lagre Ansible.CFG fil ved å trykke på + X, etterfulgt av Y og .

Prøv å pinge alle centos/rhel -vertene du har lagt til i din verter Lagerfil, som følger:

$ ansible all -u ansible -m ping

Som du kan se, er min centos 8 -vert 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 må du lage den nye spillboken install_package.Yaml i Playbooks/ Katalog, som følger:

$ nano playbooks/install_package.Yaml

Deretter skriver du inn følgende linjer i install_package.Yaml fil.

- Verter: Alle
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Installer HTTPD -pakken
dnf:
Navn: Httpd
Stat: Nåværende
Update_cache: sant

Når du er ferdig, lagre filen ved å trykke på + X, etterfulgt av Y og .

Her har jeg bare lagt til en oppgave, Installer HTTPD -pakken. Hensikten med denne oppgaven er å installere httpd pakke på centos/rhel 8.

Centos/RHEL 7 bruker ikke dnf Pakkesjef, den bruker yum Pakkesjef. Så hvis du bruker CentOS/RHEL 7, endre dnf til yum, Som merket på skjermbildet nedenfor. Ingen andre endringer kreves.

De Navn alternativet brukes til å fortelle dnf eller yum Modulen 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 modul handlingen (i.e. installere, oppgradere, fjerne) den skal ta på seg den gitte pakken. I dette tilfellet er handlingen tilstede.

De støttede verdiene til stat Alternativet er:

tilstede - vil installere pakken hvis ikke allerede er installert.

siste - vil installere pakken hvis ikke allerede installert; Hvis du allerede er installert, vil modulen se etter oppdateringer; Hvis en oppdatert versjon av pakken er tilgjengelig, vil den installere den nye versjonen.

fraværende - vil fjerne pakken hvis den er installert.

Hvis update_cache Alternativet er satt til ekte, DNF/YUM -pakken Repository Cache vil bli oppdatert før pakken er installert.

Kjør install_package.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/Install_Package.Yaml

Som du ser, spillboken install_package.Yaml løp vellykket.

Som du kan se, httpd pakken er installert på min centos 8 -vert, som jeg har lagt til på min verter Inventarfil.

$ sudo dnf liste installert | grep httpd

Hvis du er på Centos/RHEL 7, bruk yum Pakkesjef i stedet for dnf Pakkesjef for å bekrefte om pakken er installert.

$ sudo yum liste installert | grep httpd

Installere flere programvarepakker ved hjelp av med_items -loopen

Den forrige delen av denne artikkelen viste deg hvordan du installerer en enkelt programvarepakke på CentOS/RHEL -verten din ved hjelp av Ansible dnf/yum modul. Denne delen vil vise deg hvordan du installerer flere programvarepakker på CentOS/RHEL -vertene dine ved hjelp av Ansible med_items Løkke.

Først må du lage den nye spillboken install_packages.Yaml, følgende:

$ nano playbooks/install_packages.Yaml

Skriv inn følgende linjer i install_packages.Yaml fil.

- Verter: Alle
Bruker: Ansible
bli: sant
oppgaver:
- Navn: Installer alle pakkene
dnf:
Navn: 'item'
Stat: Nåværende
Update_cache: sant
med_items:
httpd
PHP
VSFTPD

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde install_packages.Yaml fil.

Her har jeg definert pakkenavnene (httpd, PHP, VSFTPD) som jeg vil installere ved hjelp av med_items Løkke.

Jeg har erstattet pakketavnet med variabelen punkt. De punkt Variabel vil bli oppdatert med pakketavnet i hver iterasjon.

Kjør install_packages.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/Install_Packages.Yaml

Som du ser, spillboken install_packages.Yaml løp vellykket.

De httpd, PHP, og VSFTPD Pakker er installert på min Centos 8 -vert, som du kan se på skjermdumpen nedenfor.

$ sudo dnf liste installert | grep httpd
$ sudo dnf liste installert | grep php
$ sudo dnf liste installert | grep vsftpd

Installere flere programvarepakker ved hjelp av Loop Loop

Starter fra Ansible 2.5, den anbefalte måten å bruke løkker i spillboken din på er ved å bruke Løkke nøkkelord, i stedet for med_items nøkkelord. Det er grunnen til at du så en advarsel da jeg kjørte install_packages.Yaml Playbook i den tidligere delen av denne artikkelen.

Jobber med løkker ved hjelp av Løkke Nøkkelord er veldig enkelt.

Først, åpne spillboken install_packages.Yaml (Fra forrige eksempel), som følger:

$ nano playbooks/install_packages.Yaml

I install_packages.Yaml Playbook, bare erstatt begrepet med_items med begrepet Løkke, Som merket på skjermbildet nedenfor. Du trenger ikke å endre noe annet.

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde install_packages.Yaml fil.

Kjør install_packages.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/Install_Packages.Yaml

Som du kan se, oppgaven Installer alle pakkene Kjørte dnf/yum modul tre ganger totalt; En gang for hver sløyfe punkt.

De httpd, PHP, og VSFTPD Pakker er installert på min Centos 8 -vert, som du kan se på skjermdumpen nedenfor.

$ sudo dnf liste installert | grep httpd
$ sudo dnf liste installert | grep php
$ sudo dnf liste installert | grep vsftpd

Installere flere programvarepakker ved hjelp av Array Syntax

Tidligere deler av denne artikkelen viste deg hvordan du bruker med_items og Løkke Løkker i Ansible for å installere flere programvarepakker på CentOS/RHEL 7 eller 8, uten noen kode repetisjon. Denne delen vil vise deg hvordan du gjør det samme med en enklere matrise -syntaks.

Først, åpne install_packages.Yaml Playbook, som følger:

$ nano playbooks/install_packages.Yaml

Fjern med_items eller Løkke seksjon fra oppgaven og endre Navn alternativ til ['httpd', 'php', vsftpd '], Som merket på skjermbildet nedenfor.

Når du er ferdig, trykk + X, etterfulgt av Y og , For å redde install_packages.Yaml Playbook.

Her, hver sitert streng inne i de firkantede parentesene ([]) er et array -element (programvarepakkenavnet, i mitt tilfelle). Hvert matriseelement skal skilles med et komma (,). Du kan legge til så mange matriseelementer du vil ha. Jeg har lagt til bare tre elementer, httpd, PHP, og VSFTPD.

Kjør install_packages.Yaml Playbook, som følger:

$ Ansible-Playbook Playbooks/Install_Packages.Yaml

Som du ser, programvarepakkene httpd, PHP, og VSFTPD er installert på min centos 8 -vert.

$ sudo dnf liste installert | grep httpd
$ sudo dnf liste installert | grep php
$ sudo dnf liste installert | grep vsftpd

Konklusjon

Denne artikkelen viste deg hvordan du bruker med_items og Løkke Løkker, så vel som Syntaks for matriser, med Ansible yum/dnf Modul for å installere flere programvarepakker på CentOS/RHEL 7 eller 8 -vertene.

For mer informasjon, sjekk Ansible Official Documentation.

[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 -modulen