Bii o ṣe le Lo Awọn iwe-idaraya to daju lati Ṣe adaṣe Awọn iṣẹ-ṣiṣe Complex lori Awọn olupin jijin pupọ - Apá 2


Ninu nkan ti tẹlẹ ti jara Ansible yii, a ṣalaye pe Ansible jẹ ohun elo ti kii ṣe oluranlowo ti o fun ọ laaye lati yarayara ati ni iṣakoso daradara awọn ẹrọ lọpọlọpọ (tun mọ bi awọn apa - ati ṣe awọn imuṣiṣẹ si wọn pẹlu) lati eto kan.

Lẹhin ti o fi software sii ninu ẹrọ oludari, ṣiṣẹda awọn bọtini fun wiwọle iwọle ọrọigbaniwọle ati didakọ wọn si awọn apa, o to akoko lati kọ ẹkọ bi o ṣe le je ki ilana ti iṣakoso iru awọn ọna latọna jijin nipa lilo Ansible.

Ni gbogbo nkan yii, bii atẹle, a yoo lo agbegbe idanwo atẹle. Gbogbo awọn ogun ni awọn apoti CentOS 7:

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

Ni afikun, jọwọ ṣe akiyesi pe a ti fi awọn apa mejeeji kun ni apakan awọn olukawe webs ti agbegbe/ati be be lo/ansible/ogun awọn faili:

Ti o sọ, jẹ ki a bẹrẹ pẹlu akọle ti o wa ni ọwọ.

Ifihan Awọn iwe-idaraya ti o ni oye

Gẹgẹbi a ti ṣalaye ninu itọsọna iṣaaju, o le lo iwulo iwulo lati ṣiṣe awọn aṣẹ ni awọn apa latọna jijin bi atẹle:

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

Ninu apẹẹrẹ loke, a ran hostnamectl --static lori node1 ati node2. Ko pẹ pupọ fun ẹnikan lati mọ pe ọna yii ti ṣiṣe awọn iṣẹ lori awọn kọnputa latọna jijin ṣiṣẹ itanran fun awọn aṣẹ kukuru ṣugbọn o le yara di ẹru tabi idoti fun awọn iṣẹ ti o nira sii ti o nilo siwaju awọn iṣeto iṣeto daradara daradara tabi awọn ibaraenisepo pẹlu awọn iṣẹ miiran

Fun apẹẹrẹ, ṣiṣeto ati tunto Wodupiresi lori awọn ogun lọpọlọpọ - eyiti a yoo bo ni nkan ti n bọ ti jara yii). Eyi ni ibiti Awọn iwe ere-idaraya wa si oju iṣẹlẹ.

Ni kukuru, Awọn iwe orin jẹ awọn faili ọrọ lasan ti a kọ sinu kika YAML, ati pe o ni atokọ pẹlu awọn ohun kan pẹlu ọkan tabi diẹ ẹ sii bọtini/iye awọn tọkọtaya (eyiti a tun mọ ni\"elile" tabi iwe-itumọ\"kan).

Ninu inu Playbook kọọkan iwọ yoo wa ọkan tabi diẹ ẹ sii ẹgbẹ awọn ọmọ-ogun (ọkọọkan awọn ẹgbẹ wọnyi ni a tun pe ni ere idaraya) nibiti awọn iṣẹ ṣiṣe ti o fẹ ṣe.

Apẹẹrẹ lati awọn iwe aṣẹ aṣẹ yoo ṣe iranlọwọ fun wa lati ṣapejuwe:

1. awọn ogun: eyi ni atokọ ti awọn ẹrọ (bi fun/ati be be lo/ansible/ogun) nibiti awọn iṣẹ ṣiṣe atẹle yoo ṣe.

2. latọna jijin_user: akọọlẹ latọna jijin ti yoo lo lati ṣe awọn iṣẹ-ṣiṣe.

3. vars: awọn oniyipada ti a lo lati yipada ihuwasi ti eto (s) latọna jijin.

4. awọn iṣẹ ṣiṣe ni ṣiṣe ni aṣẹ, ọkan ni akoko kan, lodi si gbogbo awọn ẹrọ ti o baamu awọn ogun. Laarin ere kan, gbogbo awọn ọmọ-ogun yoo gba awọn itọsọna iṣẹ kanna.

Ti o ba nilo lati ṣe adaṣe oriṣiriṣi ti awọn iṣẹ ṣiṣe ti o jọmọ fun alejo kan pato, ṣẹda iṣere miiran ninu Playbook lọwọlọwọ (ni awọn ọrọ miiran, idi ti ere kan ni lati ya yiyan yiyan kan ti awọn ọmọ-ogun si awọn iṣẹ ṣiṣe asọye daradara).

Ni ọran yẹn, bẹrẹ ere tuntun nipa fifi itọsọna awọn ọmọ-ogun kun ni isalẹ ati bẹrẹ ni:

---
- 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. awọn olutọju jẹ awọn iṣe ti o fa ni opin apakan awọn iṣẹ-ṣiṣe ni ere kọọkan, ati pe a lo julọ lati tun bẹrẹ awọn iṣẹ tabi awọn atunbere atunbere ninu awọn ọna jijin.

# mkdir /etc/ansible/playbooks

Ati faili kan ti a npè ni apache.yml inu ti nibẹ pẹlu awọn akoonu wọnyi:

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

Keji, ṣẹda itọsọna/static_files:

# mkdir /static_files

nibi ti iwọ yoo tọju faili aṣa.html aṣa:

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

Ti o sọ, bayi o to akoko lati lo iwe-iṣere yii lati ṣe awọn iṣẹ-ṣiṣe ti a mẹnuba tẹlẹ. Iwọ yoo ṣe akiyesi pe Ansible yoo lọ nipasẹ iṣẹ-ṣiṣe kọọkan nipasẹ olugbalejo, ọkan ni akoko kan, ati pe yoo ṣe ijabọ lori ipo iru awọn iṣẹ bẹẹ:

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

Bayi jẹ ki a wo ohun ti o ṣẹlẹ nigbati a ṣii ẹrọ lilọ kiri ayelujara kan ati tọka si 192.168.0.29 ati 192.168.0.30:

Jẹ ki a lọ ni igbesẹ kan siwaju ati da ọwọ duro ki o mu Muu afun kuro lori node1 ati node2:

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

Lẹhinna ṣiṣe lẹẹkansi,

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

Ni akoko yii, awọn iṣẹ-ṣiṣe ṣe ijabọ pe olupin ayelujara Apache ti bẹrẹ ati muu ṣiṣẹ lori olukọ kọọkan:

Jọwọ ṣe akiyesi apẹẹrẹ ti o wa loke bi iwo ti agbara Ansible. Lakoko ti iwọnyi jẹ awọn iṣẹ ṣiṣe ti o rọrun jo nigba ti a ṣe lori nọmba kekere ti awọn olupin, o le di alaidun pupọ ati n gba akoko ti o ba nilo lati ṣe kanna ni ọpọlọpọ (boya awọn ọgọọgọrun) ti awọn ẹrọ.

Akopọ

Ninu nkan yii a ti ṣe apejuwe bi a ṣe le ṣiṣe awọn aṣẹ ati ṣiṣe awọn iṣẹ ṣiṣe ti o nira lori ọpọlọpọ awọn ọmọ ogun latọna jijin nigbakanna lilo Ansible. Ibi-ipamọ GitHub pese ọpọlọpọ awọn apẹẹrẹ ati awọn itọsọna lori bii o ṣe le lo Ansible lati ṣaṣeyọri fere eyikeyi iṣẹ ṣiṣe ti a le fojuinu.

Bi o ṣe bẹrẹ kọ ẹkọ bii o ṣe le ṣe adaṣe awọn iṣẹ-ṣiṣe lori awọn ogun Linux latọna jijin nipa lilo Ansible, a yoo fẹ lati gbọ awọn ero rẹ. Awọn ibeere, awọn asọye, ati awọn didaba tun jẹ itẹwọgba nigbagbogbo, nitorinaa ni ọfẹ lati kan si wa nipa lilo fọọmu ti o wa ni isalẹ nigbakugba.