ວິທີການອັດຕະໂນມັດການ ນຳ ໃຊ້ WordPress ພ້ອມໆກັນໃນຫລາຍເຄື່ອງແມ່ຂ່າຍ Linux ໂດຍໃຊ້ ຄຳ ຕອບທີ່ສາມາດຕອບໄດ້ - ພາກທີ 3


ໃນສອງບົດຂຽນກ່ອນ ໜ້າ ນີ້ຂອງຊຸດ Ansible ນີ້, ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕິດຕັ້ງແລະ ກຳ ຫນົດຄ່າ Ansible ເພື່ອ ດຳ ເນີນການ ຄຳ ສັ່ງແລະປະຕິບັດວຽກທີ່ສັບສົນໃນເຊີຟເວີຫ່າງໄກ ຈຳ ນວນ ໜຶ່ງ ພ້ອມກັນ.

ໃນບົດສອນປະຈຸບັນນີ້ພວກເຮົາຈະອະທິບາຍວິທີການຕັ້ງ WordPress ໃນເຊີຟເວີຫ່າງໄກສອກຫຼີກດຽວກັນ:

node1: 192.168.0.29
node2: 192.168.0.30

ບ່ອນທີ່ພວກເຮົາຕິດຕັ້ງ, ເປີດໃຊ້ງານແລະເລີ່ມຕົ້ນ Apache (ທ່ານອາດຈະຮູ້ໃນຕອນນີ້ວ່າເປັນຫຍັງພວກເຮົາເລືອກທີ່ຈະເຮັດວຽກກັບເຄື່ອງແມ່ຂ່າຍເວັບເປັນຕົວຢ່າງເບື້ອງຕົ້ນໃນບົດສອນສຸດທ້າຍ).

ຂ້າພະເຈົ້າຂໍແນະ ນຳ ໃຫ້ທ່ານອ່ານພາກ 1 ແລະພາກທີ 2 ກ່ອນທີ່ຈະ ດຳ ເນີນການຕໍ່ໄປເພື່ອໃຫ້ແນ່ໃຈວ່າທ່ານຄຸ້ນເຄີຍກັບແນວຄວາມຄິດທີ່ກ່ຽວຂ້ອງກັບ Ansible.

ຂັ້ນຕອນທີ 1: ແນະ ນຳ ບົດບາດທີ່ສາມາດຕອບໄດ້

ເມື່ອທ່ານເລີ່ມຕົ້ນເພີ່ມວຽກຫຼາຍຂຶ້ນໃນການຫລິ້ນເກມ, PlayBook ຂອງທ່ານຈະກາຍເປັນເລື່ອງຍາກທີ່ຈະຈັດການໄດ້. ດ້ວຍເຫດຜົນດັ່ງກ່າວ, ວິທີການທີ່ແນະ ນຳ ໃນສະຖານະການເຫຼົ່ານັ້ນ (ຕົວຈິງ, ໃນທຸກໆກໍລະນີ) ແມ່ນການ ນຳ ໃຊ້ໂຄງສ້າງຂອງໄດເລກະທໍລີທີ່ມີທິດທາງ ສຳ ລັບແຕ່ລະກຸ່ມ ໜ້າ ວຽກໃນເອກະສານທີ່ແຕກຕ່າງກັນ.

ວິທີການນີ້ຊ່ວຍໃຫ້ພວກເຮົາ ນຳ ໃຊ້ແຟ້ມການຕັ້ງຄ່າເຫຼົ່ານີ້ຄືນ ໃໝ່ ໃນໂຄງການແຍກຕ່າງຫາກອີກຕໍ່ໄປ. ແຕ່ລະເອກະສານເຫຼົ່ານີ້ ກຳ ນົດສິ່ງທີ່ເອີ້ນໃນລະບົບນິເວດວິທະຍາສາດ Ansible ເປັນບົດບາດ.

ໃນກໍລະນີຂອງພວກເຮົາ, ພວກເຮົາຈະສ້າງສອງບົດບາດ. ໜຶ່ງ ໃນນັ້ນ (ທີ່ເອີ້ນວ່າ wp-dependencies) ຈະຖືກ ນຳ ໃຊ້ເພື່ອຕິດຕັ້ງ WordPress dependencies (PHP ແລະ MariaDB - ບໍ່ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງ Apache ດັ່ງທີ່ມັນໄດ້ຕິດຕັ້ງຢູ່ແລ້ວ).

ພາລະບົດບາດອື່ນ (ຊື່ວ່າ wp-install-config) ຈະປະກອບມີທຸກ ໜ້າ ວຽກທີ່ ຈຳ ເປັນທີ່ກ່ຽວຂ້ອງກັບການຕິດຕັ້ງແລະການຕັ້ງຄ່າຂອງ WordPress.

ຂັ້ນຕອນທີ 2: ການສ້າງບົດບາດທີ່ສາມາດຕອບໄດ້

Ansible ມາພ້ອມກັບຜົນປະໂຫຍດທີ່ເອີ້ນວ່າ ansible-galaxy ເຊິ່ງຈະຊ່ວຍໃຫ້ພວກເຮົາສ້າງໂຄງສ້າງໄດເລກະທໍລີ ສຳ ລັບບົດບາດຂອງພວກເຮົາ. ພວກເຮົາຈະເຮັດແບບນີ້ຢູ່ໃນ/etc/ສາມາດຕອບສະ ໜອງ ໄດ້/ຫຼິ້ນປື້ມ (ເຊິ່ງພວກເຮົາສ້າງຂື້ນໃນພາກທີ 2) ແຕ່ໃນທາງທິດສະດີທ່ານສາມາດຕັ້ງມັນໄວ້ໃນໄດເລກະທໍລີອື່ນຖ້າທ່ານຕ້ອງການ.

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

ຕໍ່ໄປຢືນຢັນບົດບາດທີ່ຖືກສ້າງຂື້ນ ໃໝ່.

# ls -R /etc/ansible/playbooks

ໃນຮູບພາບຂ້າງເທິງນີ້ພວກເຮົາສາມາດເຫັນໄດ້ວ່າ galaxy ທີ່ຕອບສະ ໜອງ ໄດ້ສ້າງສອງລາຍຊື່ທີ່ມີຊື່ດຽວກັນກັບພາລະບົດບາດຂອງພວກເຮົາ, ແລະແຟ້ມຍ່ອຍອື່ນໆ (ຄ່າເລີ່ມຕົ້ນ, ແຟ້ມ, ຜູ້ຈັດການ, ເມຕາ, ໜ້າ ວຽກ, ແມ່ແບບແລະ ໜ້າ ຈໍ) ແລະເອກະສານ README.md ພາຍໃນແຕ່ລະບ່ອນ ພວກເຂົາ.

ນອກຈາກນັ້ນ, ເອກະສານ YAML ທີ່ມີຊື່ວ່າ main.yml ຖືກສ້າງຂື້ນພາຍໃນໄດເລກະທໍລີທັງ ໝົດ ທີ່ລະບຸໄວ້ກ່ອນ ໜ້າ ນີ້, ຍົກເວັ້ນເອກະສານແລະແມ່ແບບ.

ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການດັດແກ້ເອກະສານການຕັ້ງຄ່າຕໍ່ໄປນີ້ທີ່ໄດ້ລະບຸໄວ້:

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 (ສະ ໜອງ ໃນ Pastebin ນີ້) ດັ່ງຕໍ່ໄປນີ້ແລະບັນທຶກມັນໄວ້ໃນເຄື່ອງຄວບຄຸມ Ansible ຂອງທ່ານ (ຕາມທີ່ທ່ານເຫັນໃນເອກະສານ ສຳ ເນົາ ສຳ ເນົາສຸດທ້າຍຂ້າງເທິງ, ຂ້ອຍໄດ້ດາວໂຫລດໄປທີ່ໄດເລກະທໍລີບ້ານຂອງ superuser (/ root /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. ສຳ ລັບການຕິດຕັ້ງຖານຂໍ້ມູນ ໃໝ່ ຂອງ server ເຊິ່ງບ່ອນທີ່ລະຫັດລັບບໍ່ມີຄ່າ, ເຊັ່ນວ່າໃນກໍລະນີນີ້, ແຕ່ ໜ້າ ເສຍດາຍທີ່ພວກເຮົາ ຈຳ ເປັນຕ້ອງຕັ້ງລະຫັດລັບ ສຳ ລັບຜູ້ໃຊ້ຮາກເປັນສ່ວນບຸກຄົນໃນທຸກໆເຄື່ອງຜ່ານ mysql_secure_installation.

ເທົ່າທີ່ຂ້າພະເຈົ້າຮູ້, ບໍ່ມີວິທີການເຮັດວຽກທີ່ສາມາດເຮັດໃຫ້ທ່ານຕັ້ງລະຫັດຜ່ານຂອງຮາກຜ່ານ Ansible ໃນຂັ້ນຕອນດຽວກັນທີ່ທ່ານສ້າງບັນຊີຖານຂໍ້ມູນການບໍລິຫານ ສຳ ລັບ WordPress.

ໃຫ້ແນ່ໃຈວ່າທ່ານໃຊ້ລະຫັດລັບດຽວກັນໃນທຸກໂຮດ, ຫຼັງຈາກນັ້ນຄັດລອກຂໍ້ມູນປະ ຈຳ ຕົວໃນ /root/.my.cnf (ສະຖານທີ່ຈິງອາດຈະແຕກຕ່າງກັນໃນກໍລະນີຂອງທ່ານ, ແຕ່ວ່າໃນທຸກໆກໍລະນີມັນ ຈຳ ເປັນຕ້ອງກົງກັບມູນຄ່າຂອງພາລາມິເຕີ src ສຳ ລັບວຽກງານ ສຳ ເນົາ ~/.my.cnf ໃຫ້ກັບຂໍ້ໃນ netet ໃນ /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

ໃນເອກະສານນັ້ນ (ເບິ່ງຂ້າງເທິງ) ພວກເຮົາໄດ້ຖືວ່າລະຫັດຜ່ານຂອງຮາກແມ່ນ YourMariaDBRootPassword.

6. ຕໍ່ໄປ, ປື້ມຫຼີ້ນຂອງພວກເຮົາ (/etc/ansible/playbooks/playbook.yml) ຈະມີລັກສະນະຫຼາຍຮູບແບບແລະງ່າຍດາຍເມື່ອປຽບທຽບກັບການສອນຜ່ານມາ:

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

ສຸດທ້າຍ, ມັນຮອດເວລາທີ່ຈະ ດຳ ເນີນວຽກງານເຫຼົ່ານີ້ໂດຍການສະແດງປື້ມຫຼີ້ນຂອງພວກເຮົາ:

# ansible-playbook playbook.yml

ຕອນນີ້ໃຫ້ກວດເບິ່ງວ່າພວກເຮົາສາມາດເຂົ້າເຖິງ ໜ້າ Admin WordPress ໂດຍໃຊ້ທີ່ຢູ່ IP ຂອງ node1 192.168.0.29 ແລະ node2 192.168.0.30:

ທ່ານສາມາດເບິ່ງສອງຂັ້ນຕອນສຸດທ້າຍໃນ ໜ້າ ຈໍດັ່ງຕໍ່ໄປນີ້:

ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້, ທ່ານສາມາດຕັ້ງຄ່າຕິດຕັ້ງ WordPress ຫຼາຍແບບໂດຍບໍ່ຕ້ອງໃຊ້ຄວາມພະຍາຍາມພຽງເລັກນ້ອຍໂດຍໃຊ້ Ansible. ຈາກນັ້ນທ່ານສາມາດໃຊ້ອິນເຕີເຟດຜູ້ໃຊ້ Admin ທີ່ກ່ຽວຂ້ອງເພື່ອ ກຳ ນົດແຕ່ລະເວັບໄຊທ໌ແຍກຕ່າງຫາກ.

ການພິຈາລະນາສຸດທ້າຍ

ຖ້າທ່ານ ກຳ ລັງໃຊ້ການແຈກຈ່າຍອື່ນເພື່ອໃຊ້ WordPress, ຊື່ແພັກເກັດອາດຈະແຕກຕ່າງກັນ, ແຕ່ມັນລົງມາໃນການຕິດຕັ້ງ Apache server, server server ຖານຂໍ້ມູນ MariaDB ແລະໂມດູນ Python MySQL. ຖ້າເປັນແນວນັ້ນ, ໃຫ້ໃຊ້ລະບົບການຄຸ້ມຄອງຊອບແວຂອງການແຈກຈ່າຍຂອງທ່ານເພື່ອຄົ້ນຫາຊື່ແພັກເກດທີ່ທ່ານຕ້ອງການຕິດຕັ້ງ.

ບົດສະຫຼຸບ

ໃນຊຸດນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການໃຊ້ Ansible ເພື່ອ ດຳ ເນີນການ ຄຳ ສັ່ງແລະປະຕິບັດວຽກທີ່ສັບສົນໃນຫລາຍໆເຄື່ອງ Linux ພ້ອມໆກັນ.

ໜຶ່ງ ໃນຕົວຢ່າງດັ່ງກ່າວແມ່ນການຕັ້ງ WordPress, ດັ່ງທີ່ພວກເຮົາໄດ້ສົນທະນາໃນຄູ່ມືນີ້. ບໍ່ວ່າທ່ານຈະເປັນຜູ້ບໍລິຫານລະບົບຫລື blogger, ຂ້າພະເຈົ້າຫວັງວ່າທ່ານຈະໄດ້ພົບເຫັນແນວຄວາມຄິດແລະຕົວຢ່າງໃນບົດແນະ ນຳ ນີ້ທີ່ເປັນປະໂຫຍດ.

ໂຊກດີທີ່ສຸດແລະຢ່າລັງເລທີ່ຈະລຸດສາຍພວກເຮົາຖ້າທ່ານຕ້ອງການຄວາມຊ່ວຍເຫຼືອຫຼືມີ ຄຳ ເຫັນຫຼື ຄຳ ແນະ ນຳ ໃດໆ!