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.