Jinsi ya Kuendesha Usambazaji wa Wakati huo huo wa WordPress katika Seva Nyingi za Linux Kwa Kutumia Ansible - Sehemu ya 3


Katika makala mbili zilizopita za mfululizo huu wa Ansible, tulielezea jinsi ya kusakinisha na kusanidi Ansible kuendesha amri na kufanya kazi ngumu katika seva kadhaa za mbali kwa wakati mmoja.

Katika somo la sasa tutaelezea jinsi ya kusanidi WordPress kwenye seva za mbali sawa:

node1: 192.168.0.29
node2: 192.168.0.30

ambapo tulisakinisha, kuwasha, na kuanzisha Apache (pengine unajua kwa nini tulichagua kufanya kazi na seva ya wavuti kama mfano wa awali katika somo la mwisho).

Ninakuhimiza sana usome Sehemu ya 1 na Sehemu ya 2 kabla ya kuendelea zaidi ili kuhakikisha kuwa unafahamu dhana zinazohusiana na Ansible.

Hatua ya 1: Kuanzisha Majukumu Yanayofaa

Unapoanza kuongeza majukumu zaidi kwenye michezo, Vitabu vyako vya kucheza vinaweza kuwa vigumu kushughulikia. Kwa sababu hiyo, mbinu iliyopendekezwa katika hali hizo (kwa kweli, katika hali zote) ni kutumia muundo wa saraka ambayo ina maagizo kwa kila kikundi cha kazi katika faili tofauti.

Mbinu hii huturuhusu kutumia tena faili hizi za usanidi katika miradi tofauti zaidi barabarani. Kila moja ya faili hizi hufafanua kile kinachoitwa katika mfumo ikolojia unaoweza kutambulika jukumu.

Kwa upande wetu, tutaunda majukumu mawili. Mojawapo (inayoitwa utegemezi wa wp) itatumika kusakinisha vitegemezi vya WordPress (PHP na MariaDB - hakuna haja ya kusakinisha Apache kwani tayari imesakinishwa).

Jukumu lingine (linaloitwa wp-install-config) litajumuisha kazi zote muhimu zinazohusiana na usakinishaji na usanidi wa WordPress.

Hatua ya 2: Kuunda Majukumu Yanayofaa

Ansible inakuja na huduma inayoitwa ansible-galaxy ambayo itatusaidia kuunda muundo wa saraka kwa majukumu yetu. Tutafanya hivi katika /etc/ansible/playbooks (ambazo tuliunda katika Sehemu ya 2) lakini kwa nadharia unaweza kuiweka kwenye saraka nyingine ikiwa unataka.

# cd /etc/ansible/playbooks
# ansible-galaxy init wp-dependencies
# ansible-galaxy init wp-install-config

Inayofuata inathibitisha majukumu mapya yaliyoundwa.

# ls -R /etc/ansible/playbooks

Katika picha iliyo hapo juu tunaweza kuona kwamba ansible-galaxy iliunda saraka mbili zenye jina sawa na majukumu yetu, na saraka nyingine ndogo (chaguo-msingi, faili, vidhibiti, meta, kazi, violezo, na vars) na faili ya README.md ndani ya kila moja ya yao.

Zaidi ya hayo, faili ya YAML inayoitwa main.yml iliundwa ndani ya saraka zote zilizoorodheshwa hapo awali, isipokuwa faili na violezo.

Tutaanza kwa kuhariri faili zifuatazo za usanidi kama ilivyoonyeshwa:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Kumbuka kuwa tunajumuisha httpd ikiwa hujafuata mafunzo ya awali ya mfululizo huu.

---
# tasks file for wp-dependencies
- name: Update packages (this is equivalent to yum update -y)
  yum: name=* state=latest

- name: Install dependencies for WordPress
  yum: name={{ item }} state=present
  with_items:
        - httpd
        - mariadb-server 
        - mariadb
        - php 
        - php-mysql
        - MySQL-python

- name: Ensure MariaDB is running (and enable it at boot)
  service: name=mariadb state=started enabled=yes

- name: Copy ~/.my.cnf to nodes
  copy: src=/root/.my.cnf dest=/root/.my.cnf

- name: Create MariaDB database
  mysql_db: name={{ wp_mysql_db }} state=present

- name: Create MariaDB username and password
  mysql_user:
        login_user=root
        login_password=YourMariaDBRootPasswordHere
        name={{ wp_mysql_user }}
        password={{ wp_mysql_password }}
        priv=*.*:ALL

2. /etc/ansible/playbooks/wp-dependencies/defaults/main.yml

---
# defaults file for wp-dependencies
  wp_mysql_db: MyWP
  wp_mysql_user: wpUser
  wp_mysql_password: wpP4ss

3. /etc/ansible/playbooks/wp-install-config/tasks/main.yml:

---
# tasks file for wp-install-config
- name: Create directory to download WordPress
  command: mkdir -p /opt/source/wordpress

- name: Download WordPress
  get_url: url=https://www.wordpress.org/latest.tar.gz dest=/opt/source/wordpress/wordpress.tar.gz validate_certs=no

- name: Extract WordPress
  command: "tar xzf /opt/source/wordpress/wordpress.tar.gz -C /var/www/html --strip-components 1"

- name: Send config file
  copy: src=/root/wp-config-sample.php dest=/var/www/html/wp-config.php mode=0644

4. wp-config-sample.php (iliyotolewa katika Pastebin hii) kama ifuatavyo na uihifadhi kwa mashine yako ya kudhibiti Ansible (kama unavyoweza kuona katika maagizo ya nakala ya mwisho hapo juu, niliipakua kwenye saraka ya nyumbani ya mtumiaji mkuu (/root). /wp-config-sample.php).

Muhimu: Tafadhali kumbuka kuwa thamani ya vigezo DB_NAME, DB_USER, na DB_PASSWORD ni sawa na katika /etc/ansible/playbooks/wp-dependencies/defaults/main.yml:

…
/** The name of the database for WordPress */
define('DB_NAME', 'MyWP');

/** MySQL database username */
define('DB_USER', 'wpUser');

/** MySQL database password */
define('DB_PASSWORD', 'wpP4ss');
…

5. Kwa usakinishaji mpya wa seva ya hifadhidata ambapo nenosiri la msingi ni tupu, kama vile katika hali hii, kwa bahati mbaya tunahitaji kusanidi nenosiri la mzizi wa mtumiaji mmoja mmoja katika kila mashine kupitia mysql_secure_installation.

Kwa kadiri ninavyojua, hakuna kazi inayopatikana ambayo itakuruhusu kusanidi nywila ya mizizi kupitia Ansible katika hatua sawa ambapo unaunda akaunti ya hifadhidata ya kiutawala ya WordPress.

Hakikisha unatumia nenosiri sawa katika wapangishi wote, kisha unakili hati tambulishi katika /root/.my.cnf (eneo halisi linaweza kutofautiana katika hali yako, lakini katika hali zote linahitaji kulinganisha thamani ya src parameta kwa kazi hiyo. Nakili ~/.my.cnf kwa nodi katika /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

Katika faili hiyo (tazama hapo juu) tumedhani kuwa nywila ya mzizi ni YourMariaDBRootPassword.

6. Kisha, kitabu chetu cha kucheza (/etc/ansible/playbooks/playbook.yml) kitaonekana kupangwa na rahisi zaidi ikilinganishwa na mafunzo ya awali:

# cat playbook.yml
- hosts: webservers
  roles:
        - wp-dependencies
        - wp-install-config

Hatimaye, ni wakati wa kutekeleza majukumu haya kwa kutumia kitabu chetu cha kucheza:

# ansible-playbook playbook.yml

Sasa hebu tuangalie ikiwa tunaweza kufikia ukurasa wa Msimamizi wa WordPress kwa kutumia anwani za IP za node1 192.168.0.29 na node2 192.168.0.30:

Unaweza kutazama hatua mbili za mwisho kwenye skrini ifuatayo:

Kama unavyoona, unaweza kusanidi usakinishaji mwingi wa WordPress bila bidii yoyote kwa kutumia Ansible. Kisha unaweza kutumia kiolesura husika cha Msimamizi kusanidi kila tovuti kivyake.

Mawazo ya mwisho

Ikiwa unatumia usambazaji mwingine kupeleka WordPress, jina la vifurushi linaweza kutofautiana, lakini inakuja kwa kusakinisha seva ya wavuti ya Apache, seva ya hifadhidata ya MariaDB, na moduli ya Python MySQL. Ikiwa ndivyo ilivyo, tumia mfumo wako wa usimamizi wa programu ya usambazaji kutafuta jina kamili la kifurushi unachohitaji kusakinisha.

Muhtasari

Katika mfululizo huu tumeelezea jinsi ya kutumia Ansible kuendesha amri na kutekeleza kazi ngumu katika mashine kadhaa za Linux kwa wakati mmoja.

Moja ya mifano kama hii ni kuanzisha WordPress, kama tulivyojadili katika mwongozo huu. Iwe wewe ni msimamizi wa mfumo au mwanablogu, natumai umepata dhana na mifano katika somo hili kuwa muhimu.

Bahati nzuri na usisite kutupa mstari ikiwa unahitaji msaada au una maoni au mapendekezo yoyote!