Giunsa Pag-automate ang Dungan nga Pag-deploy sa WordPress sa Daghang mga Server sa Linux Gamit ang Ansible - Bahin 3


Sa miaging duha ka artikulo niining Ansible nga serye, among gipatin-aw kung giunsa ang pag-install ug pag-configure sa Ansible sa pagpadagan sa mga command ug paghimo sa mga komplikadong buluhaton sa daghang mga remote server nga dungan.

Sa karon nga panudlo among ipasabut kung giunsa ang pag-set up sa WordPress sa parehas nga hilit nga mga server:

node1: 192.168.0.29
node2: 192.168.0.30

diin among gi-install, gipaandar, ug gisugdan ang Apache (tingali nahibal-an na nimo karon kung ngano nga gipili namon ang pagtrabaho sa usa ka web server ingon usa ka inisyal nga pananglitan sa katapusan nga panudlo).

Giawhag ko ikaw nga basahon ang Bahin 1 ug Bahin 2 sa dili pa magpadayon aron masiguro nga pamilyar ka sa mga konsepto nga adunay kalabotan sa Ansible.

Lakang 1: Pagpaila sa Masaligang Papel

Samtang nagsugod ka sa pagdugang ug dugang nga mga buluhaton sa mga dula, ang imong mga Playbook mahimong labi ka lisud sa pagdumala. Tungod niana nga rason, ang girekomendar nga pamaagi sa mga sitwasyon (sa tinuud, sa tanan nga mga kaso) mao ang paggamit sa usa ka istruktura sa direktoryo nga adunay mga direktiba alang sa matag grupo sa mga buluhaton sa lahi nga mga file.

Kini nga pamaagi nagtugot kanamo sa paggamit pag-usab niini nga mga configuration file sa lain-laing mga proyekto sa unahan sa dalan. Ang matag usa niini nga mga file naghubit kung unsa ang gitawag sa Ansible ecosystem nga usa ka papel.

Sa among kaso, maghimo kami og duha ka papel. Ang usa niini (gitawag nga wp-dependencies) gamiton sa pag-instalar sa mga dependency sa WordPress (PHP ug MariaDB - dili kinahanglan nga i-install ang Apache tungod kay na-install na kini).

Ang laing tahas (ginganlan og wp-install-config) maglakip sa tanang gikinahanglang buluhaton nga nalangkit sa pag-instalar ug pag-configure sa WordPress.

Lakang 2: Paghimo og Masaligang Papel

Ang Ansible adunay gamit nga gitawag ug ansible-galaxy nga makatabang kanamo sa paghimo sa istruktura sa direktoryo alang sa among mga tahas. Buhaton namo kini sa /etc/ansible/playbooks (nga among gibuhat sa Part 2) pero sa teorya mahimo nimo kining i-set up sa laing direktoryo kung gusto nimo.

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

Sunod nagpamatuod sa bag-ong nahimo nga mga tahas.

# ls -R /etc/ansible/playbooks

Sa hulagway sa ibabaw atong makita nga ang ansible-galaxy nagmugna og duha ka direktoryo nga adunay parehas nga ngalan sa atong mga tahas, ug uban pang mga subdirektoryo (mga default, mga file, mga tigdumala, meta, mga buluhaton, mga templates, ug mga vars) ug usa ka README.md file sulod sa matag usa sila.

Dugang pa, usa ka YAML file nga ginganlag main.yml gihimo sulod sa tanan nga mga direktoryo nga gilista sa sayo pa, gawas sa mga file ug templates.

Magsugod kami pinaagi sa pag-edit sa mosunud nga mga file sa pag-configure sama sa gipakita:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Timan-i nga gilakip namo ang httpd kung wala ka makasunod sa mga nangaging mga panudlo niini nga serye.

---
# 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 (nga gihatag niini nga Pastebin) ingon sa mosunod ug i-save kini sa imong Ansible controller machine (ingon sa imong makita sa katapusang kopya nga direktiba sa ibabaw, gi-download nako kini sa home directory sa superuser (/root /wp-config-sample.php).

Importante: Palihug timan-i nga ang bili sa mga variable DB_NAME, DB_USER, ug DB_PASSWORD parehas sa /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. Alang sa bag-ong database server installations diin ang root password walay sulod, sama niini nga kaso, subo nga kinahanglan natong i-setup ang password alang sa user root nga tagsa-tagsa sa matag makina pinaagi sa mysql_secure_installation.

Sa akong nahibal-an, wala'y magamit nga workaround nga magtugot kanimo sa pag-set up sa root password pinaagi sa Ansible sa parehas nga lakang diin imong gihimo ang administrative database account alang sa WordPress.

Siguruha nga mogamit ka sa parehas nga password sa tanan nga mga host, unya kopyaha ang mga kredensyal sa /root/.my.cnf (ang aktuwal nga lokasyon mahimong magkalainlain sa imong kaso, apan sa tanan nga mga higayon kinahanglan nga motakdo sa kantidad sa parameter sa src alang sa buluhaton. Kopyaha ang ~/.my.cnf sa mga node sa /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

Sa kana nga file (tan-awa sa ibabaw) kami nagtuo nga ang password alang sa gamut mao ang YourMariaDBRootPassword.

6. Sunod, ang atong playbook (/etc/ansible/playbooks/playbook.yml) tan-awon nga mas organisado ug yano kon itandi sa miaging tutorial:

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

Sa katapusan, panahon na sa pagpadagan niini nga mga buluhaton pinaagi sa paggamit sa among playbook:

# ansible-playbook playbook.yml

Karon atong susihon kung ma-access ba nato ang WordPress Admin page gamit ang mga IP address sa node1 192.168.0.29 ug node2 192.168.0.30:

Mahimo nimong tan-awon ang katapusang duha ka mga lakang sa mosunod nga screencast:

Sama sa imong nakita, mahimo nimong i-set up ang daghang mga pag-install sa WordPress nga gamay o wala’y paningkamot gamit ang Ansible. Dayon mahimo nimong gamiton ang tagsa-tagsa nga Admin user interface aron i-configure ang matag site nga gilain.

Katapusan nga mga konsiderasyon

Kung naggamit ka ug lain nga pag-apod-apod aron i-deploy ang WordPress, ang ngalan sa mga pakete mahimong magkalainlain, apan kini moabut sa pag-install sa Apache web server, ang MariaDB database server, ug ang Python MySQL module. Kung mao kana ang kahimtang, gamita ang sistema sa pagdumala sa software sa imong pag-apod-apod aron pangitaon ang eksaktong ngalan sa package nga kinahanglan nimo i-install.

Summary

Niini nga serye among gipatin-aw kung unsaon paggamit ang Ansible sa pagpadagan sa mga sugo ug pagpatuman sa mga komplikadong buluhaton sa daghang mga makina sa Linux nga dungan.

Usa sa mga pananglitan mao ang pag-set up sa WordPress, sama sa among nahisgutan sa kini nga giya. Kung ikaw usa ka system administrator o usa ka blogger, nanghinaut ko nga nakit-an nimo ang mga konsepto ug mga pananglitan sa kini nga panudlo nga mapuslanon.

Labing maayo nga swerte ug ayaw pagpanuko sa paghulog kanamo sa usa ka linya kung kinahanglan nimo ang tabang o adunay bisan unsang mga komento o sugyot!