Kuidas automatiseerida WordPressi samaaegset juurutamist mitmetes Linuxi serverites rakenduse Ansible abil - 3. osa


Selle Ansible seeria kahes eelmises artiklis selgitasime, kuidas installida ja konfigureerida Ansible käskude käivitamiseks ja keeruliste ülesannete samaaegseks täitmiseks mitmes kaugserveris.

Praeguses õpetuses selgitame, kuidas WordPress seadistada samadesse kaugserveritesse:

node1: 192.168.0.29
node2: 192.168.0.30

kuhu me Apache installisime, lubasime ja käivitasime (ilmselt teate juba praegu, miks valisime viimases õpetuses esmase näitena töötamise veebiserveriga).

Soovitan teil tungivalt enne jätkamist lugeda 1. ja 2. osa, et veenduda, et olete mõistetavad rakendusega Ansible seotud mõisted.

1. samm: anonüümsete rollide tutvustamine

Kui hakkate näidenditele järjest rohkem ülesandeid lisama, võib teie Playbooks olla üha raskem käsitseda. Sel põhjusel on sellistes olukordades (tegelikult kõigil juhtudel) soovitatav lähenemisviis kasutada kataloogistruktuuri, mis sisaldab käskkirju iga ülesannete rühma jaoks eraldi failides.

See lähenemine võimaldab meil neid konfiguratsioonifaile taaskasutada eraldi projektides, mis jäävad teele. Kõik need failid määratlevad selle, mida nimetatakse võimalikus ökosüsteemis rolliks.

Meie puhul loome kaks rolli. Ühte neist (nn wp-sõltuvusi) kasutatakse WordPressi sõltuvuste installimiseks (PHP ja MariaDB - Apache'i pole vaja installida, kuna see on juba installitud).

Teine roll (nimega wp-install-config) sisaldab kõiki vajalikke ülesandeid, mis on seotud WordPressi installimise ja seadistamisega.

2. samm: anonüümsete rollide loomine

Ansible on varustatud utiliidiga, mida nimetatakse ansible-galaxy, mis aitab meil luua oma rollide kataloogistruktuuri. Teeme seda kataloogis/etc/ansible/playbooks (mille lõime 2. osas), kuid teoreetiliselt saate selle soovi korral seadistada mõnes teises kataloogis.

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

Järgmine kinnitab vastloodud rollid.

# ls -R /etc/ansible/playbooks

Ülaltoodud pildil näeme, et ansible-galaxy lõi kaks kataloogi sama nimega nagu meie rollid, ja muud alamkataloogid (vaikeväärtused, failid, käitlejad, meta, ülesanded, mallid ja vars) ning faili README.md neid.

Lisaks loodi kõigis varem loetletud kataloogides YAML-fail nimega main.yml, välja arvatud failid ja mallid.

Alustame järgmiste konfiguratsioonifailide muutmisega, nagu näidatud:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Pange tähele, et kaasame ka httpd juhuks, kui te pole järginud selle sarja eelmisi õpetusi.

---
# 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 (pakutakse selles Pastebinis) järgmiselt ja salvestage see oma Ansible kontrolleri masinasse (nagu näete ülaltoodud viimases koopiadirektiivis, laadisin selle alla superkasutaja kodukataloogi (/ root /wp-config-sample.php).

NB! Pange tähele, et muutujate DB_NAME, DB_USER ja DB_PASSWORD väärtus on sama, mis failides /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. Uute andmebaasiserveri installatsioonide korral, kus juurparool on tühi, nagu antud juhul, peame kahjuks seadistama kasutaja juur parooli eraldi iga masina kaudu mysql_secure_installation abil.

Niipalju kui ma tean, pole ühtegi lahendust, mis võimaldaks teil seadistada juurparooli Ansible'i kaudu samasse sammu, kus loote WordPressi haldusandmebaasi konto.

Veenduge, et kasutate kõigis hostides sama parooli, seejärel kopeerige mandaat kausta /root/.my.cnf (tegelik asukoht võib teie puhul erineda, kuid kõigil juhtudel peab see vastama ülesande src parameetri väärtusele Kopeerige ~/.my.cnf sõlmedesse jaotises /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

Selles failis (vt eespool) oleme eeldanud, et root parool on YourMariaDBRootPassword.

6. Järgmisena näeb meie mänguraamat (/etc/ansible/playbooks/playbook.yml) eelmise juhendajaga võrreldes palju korrastatum ja lihtsam välja:

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

Lõpuks on aeg nende ülesannete täitmiseks meie esiraamatut kasutades:

# ansible-playbook playbook.yml

Kontrollime nüüd, kas pääseme WordPressi administraatori lehele juurde, kasutades sõlme1 192.168.0.29 ja sõlme2 192.168.0.30 IP-aadresse:

Järgmist ekraanikuva saate vaadata kahte viimast sammu:

Nagu näete, saate Ansible abil seadistada mitu WordPressi installimist vähese vaevata. Seejärel saate iga saidi eraldi konfigureerimiseks kasutada vastavat administraatori kasutajaliidest.

Lõppkaalutlused

Kui kasutate WordPressi juurutamiseks mõnda muud levitamist, võib pakettide nimi erineda, kuid see sõltub Apache veebiserveri, MariaDB andmebaasiserveri ja Pythoni MySQL-i mooduli installimisest. Sel juhul otsige paketi täpse nime installimiseks oma levitamise tarkvarahaldussüsteemi.

Kokkuvõte

Selles seerias oleme selgitanud, kuidas kasutada rakendust Ansible käskude käivitamiseks ja keerukate ülesannete täitmiseks samaaegselt mitmes Linuxi masinas.

Üks sellistest näidetest on WordPressi seadistamine, nagu oleme selles juhendis arutanud. Olenemata sellest, kas olete süsteemiadministraator või ajaveebipidaja, loodan, et leiate selle õpetuse mõisted ja näited kasulikuks.

Palju õnne ja ärge kartke meile joont anda, kui vajate abi või kui teil on kommentaare või ettepanekuid!