Kif tuża Ansible Playbooks biex Awtomatizza Ħidmiet Kumplessi fuq Servers Remoti Multipli - Parti 2


Fl-artiklu preċedenti ta 'din is-serje Ansible, spjegajna li Ansible hija għodda mingħajr aġent li tippermettilek timmaniġġja malajr u b'mod effiċjenti magni multipli (magħrufa wkoll bħala nodi - u twettaq skjeramenti għalihom ukoll) minn sistema waħda.

Wara li tinstalla s-softwer fil-magna tal-kontrollur, toħloq iċ-ċwievet għal login mingħajr password u tikkopjahom fin-nodi, wasal iż-żmien li titgħallem kif tottimizza l-proċess tal-ġestjoni ta 'sistemi remoti bħal dawn bl-użu ta' Ansible.

Matul dan l-artikolu, kif ukoll dak li jmiss, se nużaw l-ambjent tat-test li ġej. L-ospiti kollha huma kaxxi CentOS 7:

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

Barra minn hekk, jekk jogħġbok innota li ż-żewġ nodi ġew miżjuda fit-taqsima tal-webservers tal-fajl lokali /etc/ansible/hosts:

Cela dit, ejja nibdew bis-suġġett in naħa.

Nintroduċu Ansible Playbooks

Kif deskritt fil-gwida preċedenti, tista 'tuża l-utilità ansible biex tmexxi kmandi f'nodi remoti kif ġej:

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

Fl-eżempju ta 'hawn fuq, għamilna hostnamectl --static fuq node1 u node2. Ma jdumx wisq biex wieħed jirrealizza li dan il-metodu ta’ tmexxija ta’ kompiti fuq kompjuters remoti jaħdem tajjeb għal kmandi qosra iżda jista’ malajr isir ta’ piż jew imħawwad għal kompiti aktar kumplessi li jeħtieġu aktar parametri ta’ konfigurazzjoni strutturati sew jew interazzjonijiet ma’ servizzi oħra

Per eżempju, it-twaqqif u l-konfigurazzjoni ta 'WordPress fuq hosts multipli - li se nkopru fl-artiklu li jmiss ta' din is-serje). Dan huwa fejn Playbooks jidħlu fix-xena.

Fi kliem sempliċi, Playbooks huma fajls b'test sempliċi miktuba fil-format YAML, u fihom lista b'oġġetti b'par ċavetta/valur wieħed jew aktar (magħrufa wkoll bħala \hash jew \dizzjunarju).

Ġewwa kull Playbook issib grupp wieħed jew aktar ta’ hosts (kull wieħed minn dawn il-gruppi jissejjaħ ukoll dramm) fejn għandhom jitwettqu l-kompiti mixtieqa.

Eżempju mid-dokumenti uffiċjali jgħinna nispjegaw:

1. hosts: din hija lista ta 'magni (sfor /etc/ansible/hosts) fejn se jitwettqu l-kompiti li ġejjin.

2. remote_user: kont remot li se jintuża biex iwettaq il-kompiti.

3. vars: varjabbli użati biex jimmodifikaw l-imġiba tas-sistema(i) remota(i).

4. il-kompiti huma esegwiti fl-ordni, wieħed kull darba, kontra l-magni kollha li jaqblu hosts. Fi play, l-ospiti kollha se jieħdu l-istess direttivi tal-kompitu.

Jekk għandek bżonn tesegwixxi sett differenti ta 'kompiti assoċjati għal ospitanti speċifiku, oħloq dramm ieħor fil-Playbook attwali (fi kliem ieħor, l-iskop ta' dramm huwa li timmappja għażla speċifika ta 'hosts għal kompiti definiti tajjeb).

F'dak il-każ, ibda logħob ġdid billi żżid id-direttiva tal-ospiti fil-qiegħ u ibda mill-ġdid:

---
- 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. handlers huma azzjonijiet li huma attivati fl-aħħar tat-taqsima tal-kompiti f'kull play, u huma l-aktar użati biex jerġgħu jibdew is-servizzi jew jibdew reboots fis-sistemi remoti.

# mkdir /etc/ansible/playbooks

U fajl bl-isem apache.yml ġewwa hemmhekk bil-kontenut li ġej:

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

It-tieni, oħloq direttorju /static_files:

# mkdir /static_files

fejn se taħżen il-fajl index.html tad-dwana:

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

Cela dit, issa wasal iż-żmien li tuża dan il-playbook biex twettaq il-kompiti msemmija qabel. Tinnota li Ansible se jgħaddi minn kull kompitu minn ospitanti, wieħed kull darba, u se jirrapporta dwar l-istatus ta 'dawn il-kompiti:

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

Issa ejja naraw x'jiġri meta niftħu browser u nippuntawlu lejn 192.168.0.29 u 192.168.0.30:

Ejja mmorru pass ieħor u manwalment waqqaf u tiddiżattiva Apache fuq in-node1 u n-node2:

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

Imbagħad erġa' ġri,

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

Din id-darba, il-kompitu jirrapporta li s-server tal-web Apache inbeda u ppermetta fuq kull host:

Jekk jogħġbok ikkunsidra l-eżempju ta 'hawn fuq bħala idea tal-qawwa ta' Ansible. Filwaqt li dawn huma ħidmiet relattivament faċli meta jitwettqu fuq numru żgħir ta 'servers, jista' jsir tedjanti ħafna u jieħu ħafna ħin jekk ikollok bżonn tagħmel l-istess f'diversi (forsi mijiet) ta 'magni.

Sommarju

F'dan l-artikolu ddeskrivejna kif tmexxi kmandi u tesegwixxi ħidmiet kumplessi fuq diversi hosts remoti fl-istess ħin billi tuża Ansible. Ir-repożitorju GitHub jipprovdi ħafna eżempji u gwidi dwar kif tuża Ansible biex tikseb kważi kull kompitu immaġinabbli.

Hekk kif tibda titgħallem kif awtomat il-kompiti fuq hosts Linux remoti bl-użu ta 'Ansible, nixtiequ nisimgħu l-ħsibijiet tiegħek. Mistoqsijiet, kummenti, u suġġerimenti huma wkoll dejjem milqugħa, għalhekk tħossok liberu li tikkuntattjana billi tuża l-formola hawn taħt f'kull ħin.