วิธีการปรับใช้ WordPress พร้อมกันโดยอัตโนมัติในเซิร์ฟเวอร์ Linux หลายเครื่องโดยใช้ Ansible - ตอนที่ 3
ในสองบทความก่อนหน้าของชุด Ansible นี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่า Ansible เพื่อเรียกใช้คำสั่งและทำงานที่ซับซ้อนในเซิร์ฟเวอร์ระยะไกลหลายเครื่องพร้อมกัน
ในบทช่วยสอนปัจจุบัน เราจะอธิบายวิธีการตั้งค่า WordPress ในเซิร์ฟเวอร์ระยะไกลเดียวกัน:
node1: 192.168.0.29
node2: 192.168.0.30
ที่เราติดตั้ง เปิดใช้งาน และเริ่มต้น Apache (ตอนนี้คุณคงทราบแล้วว่าทำไมเราถึงเลือกทำงานกับเว็บเซิร์ฟเวอร์เป็นตัวอย่างเบื้องต้นในบทช่วยสอนที่แล้ว)
ฉันขอแนะนำให้คุณอ่านส่วนที่ 1 และ ส่วนที่ 2 ก่อนที่จะดำเนินการต่อเพื่อให้แน่ใจว่าคุณคุ้นเคยกับแนวคิดที่เกี่ยวข้องกับ Ansible
วิธีติดตั้งและกำหนดค่าเครื่องมืออัตโนมัติ 'Ansible' สำหรับการจัดการไอที – ส่วนที่ 1
วิธีใช้ Anisble Playbooks เพื่อทำให้งานที่ซับซ้อนเป็นอัตโนมัติบนเซิร์ฟเวอร์ระยะไกลหลายเครื่อง – ส่วนที่ 2
ขั้นตอนที่ 1: แนะนำบทบาทที่เข้าใจได้
เมื่อคุณเริ่มเพิ่มงานในการเล่นมากขึ้น Playbooks ของคุณอาจจัดการได้ยากขึ้นเรื่อยๆ ด้วยเหตุนี้ แนวทางที่แนะนำในสถานการณ์เหล่านั้น (อันที่จริง ในทุกกรณี) คือการใช้โครงสร้างไดเร็กทอรีที่มีคำสั่งสำหรับแต่ละกลุ่มงานในไฟล์ที่แตกต่างกัน
แนวทางนี้ช่วยให้เราสามารถนำไฟล์การกำหนดค่าเหล่านี้กลับมาใช้ซ้ำในโปรเจ็กต์ที่แยกจากกันต่อไปได้ แต่ละไฟล์เหล่านี้จะกำหนดสิ่งที่เรียกว่าบทบาทใน ระบบนิเวศที่เข้าใจได้
ในกรณีของเรา เราจะสร้างสองบทบาท หนึ่งในนั้น (เรียกว่า wp-dependencies) จะถูกใช้เพื่อติดตั้งการขึ้นต่อกันของ WordPress (PHP และ MariaDB – ไม่จำเป็นต้องติดตั้ง Apache ตามที่ติดตั้งไว้แล้ว)
บทบาทอื่นๆ (ชื่อ wp-install-config) จะรวมงานที่จำเป็นทั้งหมดที่เกี่ยวข้องกับการติดตั้งและการกำหนดค่าของ WordPress
ขั้นตอนที่ 2: การสร้างบทบาทที่เข้าใจได้
Ansible มาพร้อมกับยูทิลิตี้ชื่อ ansible-galaxy ซึ่งจะช่วยให้เราสร้างโครงสร้างไดเร็กทอรีสำหรับบทบาทของเรา เราจะดำเนินการนี้ใน /etc/ansible/playbooks (ซึ่งเราสร้างขึ้นใน ส่วนที่ 2) แต่ในทางทฤษฎีแล้ว คุณสามารถตั้งค่าไว้ในไดเร็กทอรีอื่นได้หากต้องการ
cd /etc/ansible/playbooks
ansible-galaxy init wp-dependencies
ansible-galaxy init wp-install-config
ถัดไปยืนยันบทบาทที่สร้างขึ้นใหม่
ls -R /etc/ansible/playbooks
ในภาพด้านบน เราจะเห็นว่า ansible-galaxy สร้างไดเร็กทอรีสองไดเร็กทอรีที่มีชื่อเดียวกับบทบาทของเรา และไดเร็กทอรีย่อยอื่น ๆ (defaults, files , ตัวจัดการ, เมตา, งาน, เทมเพลต และ vars) และ 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 controller ของคุณ (ดังที่คุณเห็นในคำสั่งการคัดลอกล่าสุดด้านบน ฉันดาวน์โหลดมันไปที่โฮมไดเร็กตอรี่ของ 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. สำหรับการติดตั้งเซิร์ฟเวอร์ฐานข้อมูลใหม่โดยที่รหัสผ่านรูทว่างเปล่า เช่น ในกรณีนี้ น่าเสียดาย เราจำเป็นต้องตั้งค่ารหัสผ่านสำหรับผู้ใช้รูทเป็นรายบุคคลในทุกเครื่องผ่าน mysql_secure_installation .
เท่าที่ฉันรู้ ไม่มีวิธีแก้ปัญหาชั่วคราวที่อนุญาตให้คุณตั้งค่ารหัสผ่านรูทผ่าน Ansible ในขั้นตอนเดียวกับที่คุณสร้างบัญชีฐานข้อมูลผู้ดูแลระบบสำหรับ WordPress
ตรวจสอบให้แน่ใจว่าคุณใช้รหัสผ่านเดียวกันในโฮสต์ทั้งหมด จากนั้นคัดลอกข้อมูลรับรองใน /root/.my.cnf (ตำแหน่งจริงอาจแตกต่างกันในกรณีของคุณ แต่ในทุกกรณี จะต้องตรงกับค่า ของพารามิเตอร์ src สำหรับงาน คัดลอก ~/.my.cnf ไปยังโหนดใน /etc/ansible/playbooks/wp-dependencies/tasks/main.yml )
ในไฟล์นั้น (ดูด้านบน) เราถือว่ารหัสผ่านสำหรับรูทคือ YourMariaDBRootPassword
6. ต่อไป Playbook ของเรา (/etc/ansible/playbooks/playbook.yml) จะดูเป็นระเบียบและเรียบง่ายมากขึ้นมากเมื่อเทียบกับบทแนะนำก่อนหน้า:
cat playbook.yml
- hosts: webservers
roles:
- wp-dependencies
- wp-install-config
ในที่สุดก็ถึงเวลารันงานเหล่านี้โดยเรียกใช้ Playbook ของเรา:
ansible-playbook playbook.yml
ตอนนี้เรามาตรวจสอบว่าเราสามารถเข้าถึงหน้าผู้ดูแลระบบ WordPress โดยใช้ที่อยู่ IP ของ node1 192.168.0.29 และ node2 192.168.0.30:
คุณสามารถดูสองขั้นตอนสุดท้ายได้ใน screencast ต่อไปนี้:
อย่างที่คุณเห็น คุณสามารถตั้งค่าการติดตั้ง WordPress หลายรายการได้โดยใช้ Ansible จากนั้น คุณสามารถใช้อินเทอร์เฟซผู้ใช้ ผู้ดูแลระบบ ที่เกี่ยวข้องเพื่อกำหนดค่าแต่ละไซต์แยกกัน
ข้อควรพิจารณาขั้นสุดท้าย
หากคุณใช้การแจกจ่ายอื่นเพื่อปรับใช้ WordPress ชื่อแพ็กเกจอาจแตกต่างกันไป แต่ขึ้นอยู่กับการติดตั้งเว็บเซิร์ฟเวอร์ Apache, เซิร์ฟเวอร์ฐานข้อมูล MariaDB และโมดูล Python MySQL หากเป็นกรณีนี้ ให้ใช้ระบบการจัดการซอฟต์แวร์ของการแจกจ่ายของคุณเพื่อค้นหาชื่อแพ็คเกจที่คุณต้องการติดตั้ง
สรุป
ในซีรีส์นี้ เราได้อธิบายวิธีใช้ Ansible เพื่อรันคำสั่งและดำเนินงานที่ซับซ้อนในเครื่อง Linux หลายเครื่องพร้อมกัน
หนึ่งในตัวอย่างดังกล่าวคือการตั้งค่า WordPress ตามที่เราได้กล่าวถึงในคู่มือนี้ ไม่ว่าคุณจะเป็นผู้ดูแลระบบหรือบล็อกเกอร์ ฉันหวังว่าคุณจะพบว่าแนวคิดและตัวอย่างในบทช่วยสอนนี้มีประโยชน์
ขอให้โชคดีและอย่าลังเลที่จะติดต่อเราหากคุณต้องการความช่วยเหลือหรือมีความคิดเห็นหรือข้อเสนอแนะ!