അൻസിബിൾ ഉപയോഗിച്ച് ഒന്നിലധികം ലിനക്സ് സെർവറുകളിൽ ഒരേസമയം വേർഡ്പ്രസ്സ് വിന്യാസങ്ങൾ എങ്ങനെ ഓട്ടോമേറ്റ് ചെയ്യാം - ഭാഗം 3


ഈ അൻസിബിൾ സീരീസിന്റെ മുമ്പത്തെ രണ്ട് ലേഖനങ്ങളിൽ, കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കാനും ഒരേസമയം നിരവധി റിമോട്ട് സെർവറുകളിൽ സങ്കീർണ്ണമായ ജോലികൾ ചെയ്യാനും അൻസിബിൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും ഞങ്ങൾ വിശദീകരിച്ചു.

അതേ റിമോട്ട് സെർവറുകളിൽ വേർഡ്പ്രസ്സ് എങ്ങനെ സജ്ജീകരിക്കാമെന്ന് നിലവിലെ ട്യൂട്ടോറിയലിൽ ഞങ്ങൾ വിശദീകരിക്കും:

node1: 192.168.0.29
node2: 192.168.0.30

ഞങ്ങൾ അപ്പാച്ചെ ഇൻസ്റ്റാൾ ചെയ്യുകയും പ്രവർത്തനക്ഷമമാക്കുകയും ആരംഭിക്കുകയും ചെയ്തിടത്ത് (കഴിഞ്ഞ ട്യൂട്ടോറിയലിൽ ഒരു പ്രാരംഭ ഉദാഹരണമായി ഞങ്ങൾ ഒരു വെബ് സെർവറുമായി പ്രവർത്തിക്കാൻ തിരഞ്ഞെടുത്തത് എന്തുകൊണ്ടാണെന്ന് ഇപ്പോൾ നിങ്ങൾക്കറിയാം).

അൻസിബിളുമായി ബന്ധപ്പെട്ട ആശയങ്ങൾ നിങ്ങൾക്ക് പരിചിതമാണെന്ന് ഉറപ്പാക്കാൻ കൂടുതൽ മുന്നോട്ട് പോകുന്നതിന് മുമ്പ് ഭാഗം 1 ഉം ഭാഗം 2 ഉം വായിക്കാൻ ഞാൻ നിങ്ങളെ വളരെയധികം പ്രോത്സാഹിപ്പിക്കുന്നു.

ഘട്ടം 1: അൻസിബിൾ റോളുകൾ അവതരിപ്പിക്കുന്നു

നിങ്ങൾ നാടകങ്ങളിലേക്ക് കൂടുതൽ കൂടുതൽ ടാസ്uക്കുകൾ ചേർക്കാൻ തുടങ്ങുമ്പോൾ, നിങ്ങളുടെ പ്ലേബുക്കുകൾ കൈകാര്യം ചെയ്യുന്നത് കൂടുതൽ ബുദ്ധിമുട്ടായിരിക്കും. ഇക്കാരണത്താൽ, അത്തരം സാഹചര്യങ്ങളിൽ ശുപാർശ ചെയ്യുന്ന സമീപനം (യഥാർത്ഥത്തിൽ, എല്ലാ സാഹചര്യങ്ങളിലും) വ്യത്യസ്ത ഫയലുകളിൽ ഓരോ ഗ്രൂപ്പ് ടാസ്uക്കുകൾക്കുമുള്ള നിർദ്ദേശങ്ങൾ ഉൾക്കൊള്ളുന്ന ഒരു ഡയറക്ടറി ഘടന ഉപയോഗിക്കുക എന്നതാണ്.

ഈ സമീപനം, ഈ കോൺഫിഗറേഷൻ ഫയലുകൾ റോഡിന് താഴെയുള്ള പ്രത്യേക പ്രോജക്റ്റുകളിൽ വീണ്ടും ഉപയോഗിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു. ഈ ഫയലുകൾ ഓരോന്നും അൻസിബിൾ ഇക്കോസിസ്റ്റത്തിൽ ഒരു റോൾ എന്ന് വിളിക്കപ്പെടുന്നതിനെ നിർവചിക്കുന്നു.

ഞങ്ങളുടെ കാര്യത്തിൽ, ഞങ്ങൾ രണ്ട് റോളുകൾ സൃഷ്ടിക്കും. വേർഡ്പ്രസ്സ് ഡിപൻഡൻസികൾ (PHP, MariaDB - ഇത് ഇതിനകം ഇൻസ്റ്റാൾ ചെയ്തിട്ടുള്ളതിനാൽ Apache ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതില്ല) ഇൻസ്റ്റാൾ ചെയ്യാൻ അവയിലൊന്ന് (wp-dependencies എന്ന് വിളിക്കപ്പെടുന്നു) ഉപയോഗിക്കും.

വേർഡ്പ്രസ്സിന്റെ ഇൻസ്റ്റാളേഷനും കോൺഫിഗറേഷനുമായി ബന്ധപ്പെട്ട ആവശ്യമായ എല്ലാ ജോലികളും മറ്റൊരു റോളിൽ (wp-install-config എന്ന് നാമകരണം ചെയ്തിരിക്കുന്നു).

ഘട്ടം 2: അൻസിബിൾ റോളുകൾ സൃഷ്ടിക്കുന്നു

അൻസിബിൾ-ഗാലക്സി എന്ന് വിളിക്കുന്ന ഒരു യൂട്ടിലിറ്റിയുമായാണ് അൻസിബിൾ വരുന്നത്, അത് നമ്മുടെ റോളുകൾക്കായി ഡയറക്ടറി ഘടന സൃഷ്ടിക്കാൻ സഹായിക്കും. ഞങ്ങൾ ഇത് /etc/ansible/playbooks-ൽ ചെയ്യും (ഭാഗം 2-ൽ ഞങ്ങൾ സൃഷ്ടിച്ചത്) എന്നാൽ സിദ്ധാന്തത്തിൽ നിങ്ങൾക്ക് വേണമെങ്കിൽ മറ്റൊരു ഡയറക്ടറിയിൽ ഇത് സജ്ജീകരിക്കാം.

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

അടുത്തത് പുതുതായി സൃഷ്ടിച്ച റോളുകൾ സ്ഥിരീകരിക്കുന്നു.

# ls -R /etc/ansible/playbooks

മുകളിലെ ചിത്രത്തിൽ, നമ്മുടെ റോളുകളുടെ അതേ പേരിൽ രണ്ട് ഡയറക്uടറികളും മറ്റ് ഉപഡയറക്uടറികളും (ഡിഫോൾട്ടുകൾ, ഫയലുകൾ, ഹാൻഡ്uലറുകൾ, മെറ്റാ, ടാസ്uക്കുകൾ, ടെംപ്ലേറ്റുകൾ, vars) ഓരോന്നിനും ഉള്ളിൽ ഒരു README.md ഫയലും ansible-galaxy സൃഷ്uടിച്ചതായി നമുക്ക് കാണാൻ കഴിയും. അവരെ.

കൂടാതെ, ഫയലുകളും ടെംപ്ലേറ്റുകളും ഒഴികെ, നേരത്തെ ലിസ്റ്റ് ചെയ്തിട്ടുള്ള എല്ലാ ഡയറക്uടറികളിലും main.yml എന്ന് പേരുള്ള ഒരു YAML ഫയൽ സൃഷ്uടിക്കപ്പെട്ടു.

സൂചിപ്പിച്ചതുപോലെ ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ ഫയലുകൾ എഡിറ്റ് ചെയ്തുകൊണ്ട് ഞങ്ങൾ ആരംഭിക്കും:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. ഈ സീരീസിന്റെ മുൻ ട്യൂട്ടോറിയലുകൾക്കൊപ്പം നിങ്ങൾ പിന്തുടരാത്ത സാഹചര്യത്തിൽ ഞങ്ങൾ httpd ഉൾപ്പെടുത്തുന്നു എന്നത് ശ്രദ്ധിക്കുക.

---
# 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 (ഈ പേസ്റ്റ്ബിനിൽ നൽകിയിരിക്കുന്നത്) ഇനിപ്പറയുന്ന രീതിയിൽ നിങ്ങളുടെ അൻസിബിൾ കൺട്രോളർ മെഷീനിൽ സേവ് ചെയ്യുക (മുകളിലുള്ള അവസാന കോപ്പി ഡയറക്uടീവിൽ നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഞാൻ അത് സൂപ്പർ യൂസറിന്റെ (/റൂട്ട്) ഹോം ഡയറക്ടറിയിലേക്ക് ഡൗൺലോഡ് ചെയ്തു. /wp-config-sample.php).

പ്രധാനപ്പെട്ടത്: DB_NAME, DB_USER, DB_PASSWORD എന്നീ വേരിയബിളുകൾക്കുള്ള മൂല്യം /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. റൂട്ട് പാസ്uവേഡ് ശൂന്യമായ പുതിയ ഡാറ്റാബേസ് സെർവർ ഇൻസ്റ്റാളേഷനുകൾക്കായി, നിർഭാഗ്യവശാൽ, നിർഭാഗ്യവശാൽ, mysql_secure_installation വഴി ഓരോ മെഷീനിലും യൂസർ റൂട്ടിനുള്ള പാസ്uവേഡ് വ്യക്തിഗതമായി സജ്ജീകരിക്കേണ്ടതുണ്ട്.

എനിക്കറിയാവുന്നിടത്തോളം, നിങ്ങൾ വേർഡ്പ്രസ്സിനായി അഡ്മിനിസ്ട്രേറ്റീവ് ഡാറ്റാബേസ് അക്കൗണ്ട് സൃഷ്ടിക്കുന്ന അതേ ഘട്ടത്തിൽ തന്നെ അൻസിബിൾ വഴി റൂട്ട് പാസ്uവേഡ് സജ്ജീകരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു പരിഹാരവും ലഭ്യമല്ല.

നിങ്ങൾ എല്ലാ ഹോസ്റ്റുകളിലും ഒരേ പാസ്uവേഡ് ഉപയോഗിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക, തുടർന്ന് /root/.my.cnf-ൽ ക്രെഡൻഷ്യലുകൾ പകർത്തുക (യഥാർത്ഥ സ്ഥാനം നിങ്ങളുടെ കാര്യത്തിൽ വ്യത്യസ്തമായിരിക്കാം, എന്നാൽ എല്ലാ സാഹചര്യങ്ങളിലും ഇത് ടാസ്uക്കിനായുള്ള src പാരാമീറ്ററിന്റെ മൂല്യവുമായി പൊരുത്തപ്പെടേണ്ടതുണ്ട്. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml) എന്നതിലെ നോഡുകളിലേക്ക് ~/.my.cnf പകർത്തുക.

ആ ഫയലിൽ (മുകളിൽ കാണുക) റൂട്ടിനുള്ള പാസ്uവേഡ് YourMariaDBRootPassword ആണെന്ന് ഞങ്ങൾ അനുമാനിച്ചു.

6. അടുത്തതായി, മുമ്പത്തെ ട്യൂട്ടോറിയലുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഞങ്ങളുടെ പ്ലേബുക്ക് (/etc/ansible/playbooks/playbook.yml) കൂടുതൽ സംഘടിതവും ലളിതവുമായി കാണപ്പെടും:

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

അവസാനമായി, ഞങ്ങളുടെ പ്ലേബുക്ക് അഭ്യർത്ഥിച്ചുകൊണ്ട് ഈ ടാസ്uക്കുകൾ പ്രവർത്തിപ്പിക്കാനുള്ള സമയമാണിത്:

# ansible-playbook playbook.yml

node1 192.168.0.29, node2 192.168.0.30 എന്നിവയുടെ IP വിലാസങ്ങൾ ഉപയോഗിച്ച് നമുക്ക് വേർഡ്പ്രസ്സ് അഡ്മിൻ പേജ് ആക്സസ് ചെയ്യാൻ കഴിയുമോ എന്ന് നോക്കാം:

ഇനിപ്പറയുന്ന സ്uക്രീൻകാസ്റ്റിൽ നിങ്ങൾക്ക് അവസാന രണ്ട് ഘട്ടങ്ങൾ കാണാൻ കഴിയും:

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, അൻസിബിൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒന്നിലധികം വേർഡ്പ്രസ്സ് ഇൻസ്റ്റാളേഷനുകൾ സജ്ജീകരിക്കാം. ഓരോ സൈറ്റും വെവ്വേറെ കോൺഫിഗർ ചെയ്യാൻ നിങ്ങൾക്ക് അതത് അഡ്മിൻ യൂസർ ഇന്റർഫേസ് ഉപയോഗിക്കാം.

അന്തിമ പരിഗണനകൾ

വേർഡ്പ്രസ്സ് വിന്യസിക്കാൻ നിങ്ങൾ മറ്റൊരു വിതരണമാണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, പാക്കേജുകളുടെ പേര് വ്യത്യാസപ്പെടാം, പക്ഷേ ഇത് അപ്പാച്ചെ വെബ് സെർവർ, മരിയാഡിബി ഡാറ്റാബേസ് സെർവർ, പൈത്തൺ MySQL മൊഡ്യൂൾ എന്നിവ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലേക്ക് വരുന്നു. അങ്ങനെയാണെങ്കിൽ, നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യേണ്ട കൃത്യമായ പാക്കേജിന്റെ പേര് തിരയാൻ നിങ്ങളുടെ വിതരണത്തിന്റെ സോഫ്റ്റ്uവെയർ മാനേജ്മെന്റ് സിസ്റ്റം ഉപയോഗിക്കുക.

സംഗ്രഹം

ഒരേസമയം നിരവധി ലിനക്സ് മെഷീനുകളിൽ കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിനും സങ്കീർണ്ണമായ ജോലികൾ എക്സിക്യൂട്ട് ചെയ്യുന്നതിനും എങ്ങനെ അൻസിബിൾ ഉപയോഗിക്കാമെന്ന് ഈ പരമ്പരയിൽ ഞങ്ങൾ വിശദീകരിച്ചിട്ടുണ്ട്.

ഈ ഗൈഡിൽ ഞങ്ങൾ ചർച്ച ചെയ്തതുപോലെ വേർഡ്പ്രസ്സ് സജ്ജീകരിക്കുന്നതാണ് അത്തരം ഉദാഹരണങ്ങളിലൊന്ന്. നിങ്ങളൊരു സിസ്റ്റം അഡ്uമിനിസ്uട്രേറ്ററോ ബ്ലോഗറോ ആകട്ടെ, ഈ ട്യൂട്ടോറിയലിലെ ആശയങ്ങളും ഉദാഹരണങ്ങളും നിങ്ങൾക്ക് ഉപയോഗപ്രദമാണെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.

ആശംസകൾ, നിങ്ങൾക്ക് സഹായം ആവശ്യമുണ്ടെങ്കിൽ അല്ലെങ്കിൽ എന്തെങ്കിലും അഭിപ്രായങ്ങളോ നിർദ്ദേശങ്ങളോ ഉണ്ടെങ്കിൽ ഞങ്ങൾക്ക് ഒരു ലൈൻ ഡ്രോപ്പ് ചെയ്യാൻ മടിക്കരുത്!