Giunsa Paggamit ang mga Ansible nga Playbook aron I-automate ang Mga Kumpleto nga Buluhaton sa Daghang Mga Hilit nga Server - Bahin 2


Sa miaging artikulo niining serye sa Ansible, among gipasabot nga ang Ansible usa ka himan nga wala’y ahente nga nagtugot kanimo nga dali ug episyente nga magdumala sa daghang mga makina (nailhan usab nga mga node - ug maghimo usab mga pag-deploy niini) gikan sa usa ka sistema.

Human sa pag-instalar sa software sa controller machine, paghimo sa mga yawe alang sa passwordless login ug pagkopya niini ngadto sa mga node, panahon na aron makat-on unsaon pag-optimize ang proseso sa pagdumala sa maong mga remote system gamit ang Ansible.

Sa tibuok niini nga artikulo, ingon man sa sunod nga artikulo, atong gamiton ang mosunod nga palibot sa pagsulay. Ang tanan nga mga host kay CentOS 7 nga mga kahon:

Controller machine (where Ansible is installed): 192.168.0.19
Node1: 192.168.0.29
Node2: 192.168.0.30

Dugang pa, palihug timan-i nga ang duha ka mga node gidugang sa seksyon sa webservers sa lokal nga /etc/ansible/hosts file:

Ingon niana, magsugod kita sa hilisgutan nga anaa.

Pagpaila sa Ansible Playbooks

Sama sa gihulagway sa miaging giya, mahimo nimong gamiton ang ansible utility sa pagpadagan sa mga command sa hilit nga mga node sama sa mosunod:

# ansible -a "/bin/hostnamectl --static" webservers

Sa pananglitan sa ibabaw, among gipadagan ang hostnamectl --static sa node1 ug node2. Dili magdugay nga maamgohan sa usa nga kini nga pamaagi sa pagpadagan sa mga buluhaton sa hilit nga mga kompyuter molihok nga maayo alang sa mugbo nga mga mando apan mahimong dali nga mahimong bug-at o gubot alang sa labi ka komplikado nga mga buluhaton nga nanginahanglan dugang nga maayong pagkahan-ay nga mga parameter sa pag-configure o mga interaksyon sa ubang mga serbisyo.

Pananglitan, ang pag-set up ug pag-configure sa WordPress sa daghang mga host - nga atong hisgutan sa sunod nga artikulo niini nga serye). Dinhi diin ang mga Playbook moabut sa eksena.

Sa yanong pagkasulti, ang Playbooks kay yano nga mga text file nga gisulat sa YAML format, ug adunay lista nga adunay mga butang nga adunay usa o daghan pa nga key/value pairs (nailhan usab nga \hash o dictionary).

Sa sulod sa matag Playbook makit-an nimo ang usa o daghang grupo sa mga host (ang matag usa niini nga mga grupo gitawag usab nga usa ka dula) diin ang gusto nga mga buluhaton himuon.

Usa ka pananglitan gikan sa opisyal nga mga dokumento makatabang kanato sa pag-ilustrar:

1. host: kini usa ka lista sa mga makina (sumala sa /etc/ansible/hosts) diin ang mga musunod nga buluhaton himuon.

2. remote_user: hilit nga asoy nga gamiton sa pagbuhat sa mga buluhaton.

3. vars: mga variable nga gigamit sa pag-usab sa kinaiya sa (mga) remote system.

4. mga buluhaton gipatuman sa han-ay, sa usa ka higayon, batok sa tanan nga mga makina nga motakdo sa mga panon. Sulod sa usa ka dula, ang tanan nga mga host makadawat sa parehas nga mga direktiba sa buluhaton.

Kung kinahanglan nimo nga ipatuman ang usa ka lahi nga hugpong sa mga kauban nga buluhaton alang sa usa ka piho nga host, paghimo og lain nga dula sa karon nga Playbook (sa laing pagkasulti, ang katuyoan sa usa ka dula mao ang pag-mapa sa usa ka piho nga pagpili sa mga host sa maayong pagkatakda nga mga buluhaton).

Niana nga kaso, pagsugod og bag-ong dula pinaagi sa pagdugang sa direktiba sa mga host sa ubos ug pagsugod og usab:

---
- 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. Ang mga handler kay mga aksyon nga gi-trigger sa katapusan sa mga buluhaton nga seksyon sa matag dula, ug kasagaran gigamit sa pagsugod pag-usab sa mga serbisyo o pag-trigger sa mga reboot sa layo nga mga sistema.

# mkdir /etc/ansible/playbooks

Ug usa ka file nga ginganlag apache.yml sa sulod didto nga adunay mga musunud nga sulud:

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

Ikaduha, paghimo og direktoryo/static_files:

# mkdir /static_files

diin imong tipigan ang custom index.html file:

<!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>

Ingon niana, karon na ang panahon nga gamiton kini nga playbook aron mahimo ang mga buluhaton nga gihisgutan sa sayo pa. Mamatikdan nimo nga ang Ansible moagi sa matag buluhaton pinaagi sa host, matag usa, ug magreport sa kahimtang sa ingon nga mga buluhaton:

# ansible-playbook /etc/ansible/playbooks/apache.yml

Karon atong tan-awon kung unsa ang mahitabo kung magbukas kita sa usa ka browser ug itudlo kini sa 192.168.0.29 ug 192.168.0.30:

Magpadayon kita sa usa ka lakang ug mano-mano nga ihunong ug i-disable ang Apache sa node1 ug node2:

# systemctl stop httpd
# systemctl disable httpd
# systemctl is-active httpd
# systemctl is-enabled httpd

Unya dagan pag-usab,

# ansible-playbook /etc/ansible/playbooks/apache.yml

Niining higayona, ang buluhaton nagtaho nga ang Apache web server gisugdan ug gipalihok sa matag host:

Palihug hunahunaa ang pananglitan sa ibabaw ingon usa ka pagtan-aw sa gahum sa Ansible. Samtang kini mga sayon nga mga buluhaton kung gihimo sa gamay nga gidaghanon sa mga server, mahimo kini nga makakapoy ug makagugol sa oras kung kinahanglan nimo nga buhaton ang parehas sa daghang (tingali gatosan) nga mga makina.

Summary

Sa kini nga artikulo among gihulagway kung giunsa ang pagpadagan sa mga mando ug pagpatuman sa mga komplikado nga buluhaton sa daghang mga hilit nga host nga dungan nga gigamit ang Ansible. Ang GitHub repository naghatag og daghang mga pananglitan ug mga giya kung unsaon paggamit ang Ansible aron makab-ot ang halos bisan unsang mahunahunaan nga buluhaton.

Samtang nagsugod ka sa pagkat-on kung giunsa ang pag-automate sa mga buluhaton sa hilit nga mga host sa Linux gamit ang Ansible, gusto namon madungog ang imong mga hunahuna. Ang mga pangutana, komento, ug mga sugyot kanunay usab nga giabiabi, busa ayaw pagduhaduha sa pagkontak kanamo gamit ang porma sa ubos bisan unsang orasa.