Kuinka käyttää mahdollisia soittokirjoja monimutkaisten tehtävien automatisointiin useilla etäpalvelimilla - osa 2
Tämän Ansible-sarjan edellisessä artikkelissa selitimme, että Ansible on ilman agentteja -työkalu, jonka avulla voit hallita nopeasti ja tehokkaasti useita koneita (tunnetaan myös solmuina - ja suorittaa käyttöönottoja myös niihin) yhdestä järjestelmästä.
Kun olet asentanut ohjelmiston ohjainkoneeseen, luonut avaimet salasanattomalle kirjautumiselle ja kopioinut ne solmuihin, on aika oppia optimoimaan tällaisten etäjärjestelmien hallinta Ansible-ohjelmalla.
Tässä artikkelissa sekä seuraavassa artikkelissa käytämme seuraavaa testiympäristöä. Kaikki isännät ovat CentOS 7 -laatikoita:
Controller machine (where Ansible is installed): 192.168.0.19 Node1: 192.168.0.29 Node2: 192.168.0.30
Huomaa lisäksi, että molemmat solmut on lisätty paikallisen/etc/ansible/hosts-tiedoston verkkopalvelimet-osioon:
Aloitetaan nyt käsillä olevasta aiheesta.
Esittelyssä Ansible Playbooks
Kuten edellisessä oppaassa on kuvattu, voit käyttää komentoa komentojen suorittamiseen etäsolmuissa seuraavasti:
# ansible -a "/bin/hostnamectl --static" webservers
Yllä olevassa esimerkissä suoritimme hostnamectl --static
solmuille1 ja solmu2. Ei kestä kauaa, kun ymmärretään, että tämä menetelmä suorittaa tehtäviä etätietokoneilla toimii hyvin lyhyiden komentojen kohdalla, mutta voi nopeasti tulla raskaaksi tai sotkuiseksi monimutkaisemmissa tehtävissä, jotka edellyttävät tarkasti jäsenneltyjä määritysparametreja tai vuorovaikutusta muiden palveluiden kanssa
Esimerkiksi WordPressin määrittäminen ja määrittäminen useille isännille - josta käsittelemme tämän sarjan seuraavaa artikkelia). Täällä kohtaavat Playbooks.
Yksinkertaisesti sanottuna Playbooks ovat yksinkertaisia tekstitiedostoja, jotka on kirjoitettu YAML-muodossa, ja ne sisältävät luettelon kohteista, joissa on yksi tai useampi avain/arvo-pari (tunnetaan myös nimellä "hash" tai "sanakirja").
Jokaisen pelikirjan sisältä löytyy yksi tai useampi isäntäryhmä (jokaista näistä ryhmistä kutsutaan myös näytelmiksi), joissa halutut tehtävät suoritetaan.
Esimerkki virallisista asiakirjoista auttaa meitä havainnollistamaan:
1. isännät: tämä on luettelo koneista (kuten/etc/ansible/hosts), joissa seuraavat tehtävät suoritetaan.
2. remote_user: etätili, jota käytetään tehtävien suorittamiseen.
3. muuttujat: muuttujat, joita käytetään muuttamaan etäjärjestelmien käyttäytymistä.
4. tehtävät suoritetaan järjestyksessä yksi kerrallaan kaikkia koneita vastaan, jotka vastaavat isäntiä. Näytelmän sisällä kaikki isännät saavat saman tehtävän ohjeet.
Jos sinun on suoritettava eri joukko liitettyjä tehtäviä tietylle isännälle, luo uusi näytelmä nykyiseen soittokirjaan (toisin sanoen pelin tarkoituksena on kartoittaa tietty valikoima isäntiä hyvin määriteltyihin tehtäviin).
Aloita tällöin uusi peli lisäämällä isäntäkomento alareunaan ja aloittamalla alusta:
--- - hosts: webservers remote_user: root vars: variable1: value1 variable2: value2 remote_user: root tasks: - name: description for task1 task1: parameter1=value_for_parameter1 parameter2=value_for_parameter2 - name: description for task1 task2: parameter1=value_for_parameter1 parameter2=value_for_parameter2 handlers: - name: description for handler 1 service: name=name_of_service state=service_status - hosts: dbservers remote_user: root vars: variable1: value1 variable2: value2 …
5. käsittelijät ovat toimintoja, jotka laukaistaan jokaisen pelin tehtäväosion lopussa ja joita käytetään enimmäkseen palvelujen uudelleenkäynnistämiseen tai uudelleenkäynnistyksen käynnistämiseen etäjärjestelmissä.
# mkdir /etc/ansible/playbooks
Ja sisällä oleva tiedosto apache.yml, jonka sisältö on seuraava:
--- - hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: pkg=httpd state=latest - name: replace default index.html file copy: src=/static_files/index.html dest=/var/www/html/ mode=0644 notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
Luo sitten hakemisto/static_files:
# mkdir /static_files
johon tallennat mukautetun index.html-tiedoston:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> </script> </head> <body> <h1>Apache was started in this host via Ansible</h1><br> <h2>Brought to you by linux-console.net</h2> </body> </html>
Tästä huolimatta nyt on aika käyttää tätä soittokirjaa aiemmin mainittujen tehtävien suorittamiseen. Huomaa, että Ansible käy läpi kaikki tehtävät isäntäkohtaisesti yksi kerrallaan ja raportoi tällaisten tehtävien tilasta:
# ansible-playbook /etc/ansible/playbooks/apache.yml
Katsotaan nyt, mitä tapahtuu, kun avaat selaimen ja osoitamme sen osoitteisiin 192.168.0.29 ja 192.168.0.30:
Mennään yksi askel eteenpäin ja pysäytetään ja poistetaan Apache manuaalisesti solmusta1 ja solmusta 2:
# systemctl stop httpd # systemctl disable httpd # systemctl is-active httpd # systemctl is-enabled httpd
Suorita sitten uudelleen
# ansible-playbook /etc/ansible/playbooks/apache.yml
Tällä kertaa tehtävä ilmoittaa, että Apache-verkkopalvelin on käynnistetty ja otettu käyttöön jokaisessa isännässä:
Harkitse yllä olevaa esimerkkiä välähdyksellä Ansiblein voimasta. Vaikka nämä ovat suhteellisen helppoja tehtäviä, kun ne suoritetaan pienellä määrällä palvelimia, se voi tulla hyvin tylsäksi ja aikaa vieväksi, jos sinun on tehtävä sama useissa (ehkä sadoissa) koneissa.
Yhteenveto
Tässä artikkelissa olemme kuvanneet komentojen suorittamisen ja monimutkaisten tehtävien suorittamisen useilla etäisännöillä samanaikaisesti Ansible-toiminnolla. GitHub-arkisto tarjoaa paljon esimerkkejä ja oppaita siitä, miten Ansible-ohjelmaa käytetään melkein minkä tahansa kuviteltavissa olevan tehtävän saavuttamiseen.
Kun alat oppia automatisoimaan tehtäviä Linux-etäisänissä Isännän avulla, haluamme kuulla ajatuksesi. Kysymykset, kommentit ja ehdotukset ovat myös aina tervetulleita, joten ota rohkeasti yhteyttä alla olevan lomakkeen avulla milloin tahansa.