I forrige artikkel i denne Ansible -serien, forklarte vi at Ansible er et agentfritt verktøy som lar deg raskt og effektivt administrere flere maskiner (også kjent som noder - og utfør distribusjoner til dem også) fra en enkelt system.
Etter å ha installert programvaren i kontrollermaskinen, oppretter du nøkler for passordløs pålogging og kopiere dem til nodene, er det på tide å lære å optimalisere prosessen med å administrere slike eksterne systemer ved hjelp av Ansible.
Gjennom denne artikkelen, så vel som den neste, vil vi bruke følgende testmiljø. Alle verter er CentOS 7 esker:
Kontrollmaskin (der Ansible er installert): 192.168.0.19 Node1: 192.168.0.29 Node2: 192.168.0.30
Vær i tillegg oppmerksom på at begge noder er lagt til i webserverseksjonen i den lokale /etc/ansible/hosts fil:
Når det er sagt, la oss komme i gang med emnet for hånden.
Som beskrevet i den forrige guiden, kan du bruke
ansvarsfull verktøy for å kjøre kommandoer i eksterne noder som følger:# ansible -a "/bin/hostnamectl --statiske" webservere.
I eksemplet ovenfor løp vi hostnamectl --statisk
på node1 og node2. Det tar ikke lang tid før en innser at denne metoden for å kjøre oppgaver på eksterne datamaskiner fungerer fint for korte kommandoer, men kan raskt bli tyngende eller rotete for mer komplekse oppgaver som krever ytterligere godt strukturerte konfigurasjonsparametere eller interaksjoner med andre tjenester
For eksempel å sette opp og konfigurere WordPress på flere verter - som vi vil dekke i den neste artikkelen i denne serien). Dette er hvor Lekebøker komme til scenen.
For å si det enkelt, Lekebøker er tekstfiler skrevet i YAML format, og inneholde en liste med elementer med ett eller flere nøkkel/verdi -par (også kjent som en "hash"Eller en"ordbok”).
Inne i hver Playbook finner du en eller flere vertsgrupper (hver av disse gruppene kalles også a spille) der de ønskede oppgavene skal utføres.
Et eksempel fra de offisielle dokumentene vil hjelpe oss å illustrere:
1.verter: dette er en liste over maskiner (iht /etc/ansible/hosts) der følgende oppgaver vil bli utført.
2.remote_user: fjernkonto som skal brukes til å utføre oppgavene.
3.vars: variabler som brukes til å endre oppførselen til det / de eksterne systemene.
4. oppgaver utføres i rekkefølge, en om gangen, mot alle maskiner som matcher verter. I et skuespill skal alle verter få de samme oppgavedirektivene.
Hvis du trenger å utføre et annet sett med tilknyttede oppgaver for en bestemt vert, må du lage et nytt spill i gjeldende Lekebok (med andre ord, formålet med et skuespill er å kartlegge et bestemt utvalg av verter til veldefinerte oppgaver).
I så fall starter du et nytt skuespill ved å legge til vertsdirektivet nederst og starte på nytt:
- verter: webservere remote_user: root vars: variabel1: verdi1 variabel2: verdi2 fjern_bruker: rotoppgaver: - navn: beskrivelse for oppgave1 oppgave1: parameter1 = verdi_for_parameter1 parameter2 = verdi_for_parameter2 - navn: beskrivelse for oppgave1 oppgave2: parameter1 = value_for_parameter1 parameter2 = value_for_parameter2 handlers: - name: description for handler 1 service: name = name_of_service state = service_status. - verter: dbservers remote_user: root vars: variabel1: verdi1 variabel2: verdi2. …
5. behandlere er handlinger som utløses på slutten av oppgavedelen i hvert spill, og brukes hovedsakelig til å starte tjenester på nytt eller utløse omstart i de eksterne systemene.
# mkdir/etc/ansible/playbooks.
Og en fil som heter apache.yml inne i det med følgende innhold:
- verter: webservere vars: http_port: 80 max_clients: 200 remote_user: rotoppgaver: - navn: sørg for at apache er i den siste versjonen yum: pkg = httpd state = siste - navn: erstatt standard index.html filkopi: src =/static_files/index.html dest =/var/www/html/mode = 0644 varsle: - start apache på nytt - navn: sørg for at apache kjører (og aktiver den ved oppstart) service: navn = httpd -tilstand = startet aktivert = ja -behandlere: - navn: start apache -tjeneste på nytt: navn = httpd tilstand = startet på nytt.
For det andre, opprett en katalog /static_files:
# mkdir /static_files.
hvor du vil lagre skikken index.html fil:
Apache ble startet i denne verten via Ansible
Brakt til deg av Tecmint.com
Når det er sagt, nå er det på tide å bruke denne lekeboken til å utføre oppgavene nevnt tidligere. Du vil merke at Ansible vil gå gjennom hver oppgave av vert, en om gangen, og vil rapportere om statusen til slike oppgaver:
# ansible-playbook /etc/ansible/playbooks/apache.yml.
La oss nå se hva som skjer når vi åpner en nettleser og peker på den 192.168.0.29 og 192.168.0.30:
La oss gå et skritt videre og stoppe og deaktivere Apache manuelt node1 og node2:
# systemctl stopp httpd. # systemctl deaktiver httpd. # systemctl er-aktiv httpd. # systemctl er aktivert httpd.
Kjør deretter igjen,
# ansible-playbook /etc/ansible/playbooks/apache.yml.
Denne gangen rapporterer oppgaven at Apache -webserveren ble startet og aktivert på hver vert:
Vurder eksemplet ovenfor som et glimt av kraften til Ansible. Selv om dette er relativt enkle oppgaver når de utføres på et lite antall servere, kan det bli veldig kjedelig og tidkrevende hvis du trenger å gjøre det samme i flere (kanskje hundrevis) maskiner.
I denne artikkelen har vi beskrevet hvordan du kjører kommandoer og utfører komplekse oppgaver på flere eksterne verter samtidig med Ansible. De offisiell dokumentasjon og GitHub -depot gi mange eksempler og veiledninger om hvordan du bruker Ansible til å oppnå nesten alle tenkelige oppgaver.
Når du begynner å lære hvordan automatisere oppgaver på eksterne Linux -verter ved å bruke Ansible, vil vi gjerne høre tankene dine. Spørsmål, kommentarer og forslag er også alltid velkomne, så ta gjerne kontakt med oss ved å bruke skjemaet nedenfor når som helst.