Kako avtomatizirati simultane razmestitve WordPressa v več strežnikih Linux s pomočjo programa Ansible - 3. del


V prejšnjih dveh člankih te serije Ansible smo razložili, kako namestiti in konfigurirati Ansible za izvajanje ukazov in izvajanje zapletenih nalog v več oddaljenih strežnikih hkrati.

V trenutni vadnici bomo razložili, kako nastaviti WordPress v istih oddaljenih strežnikih:

node1: 192.168.0.29
node2: 192.168.0.30

kjer smo namestili, omogočili in zagnali Apache (verjetno že zdaj veste, zakaj smo se kot zadnji primer v zadnji vadnici odločili za delo s spletnim strežnikom).

Toplo vas priporočam, da pred nadaljevanjem preberete 1. in 2. del, da se prepričate, da poznate koncepte, povezane z Ansible.

1. korak: Predstavitev odgovornih vlog

Ko začnete igram dodajati vedno več nalog, lahko z vašimi Playbooks postajate vse težje obvladljivi. Zato je v teh primerih priporočljiv pristop (dejansko v vseh primerih) uporaba imeniške strukture, ki vsebuje direktive za vsako skupino nalog v ločenih datotekah.

Ta pristop nam omogoča, da te konfiguracijske datoteke ponovno uporabimo v ločenih projektih. Vsaka od teh datotek določa, kaj v ekosistemu Ansible imenujemo vloga.

V našem primeru bomo ustvarili dve vlogi. Enega od njih (imenovanega wp-odvisnosti) bomo uporabili za namestitev odvisnosti WordPress (PHP in MariaDB - Apache ni treba namestiti, saj je že nameščen).

Druga vloga (imenovana wp-install-config) bo vključevala vsa potrebna opravila, povezana z namestitvijo in konfiguracijo WordPressa.

2. korak: Ustvarjanje odgovornih vlog

Ansible ima pripomoček, imenovan ansible-galaxy, ki nam bo pomagal ustvariti strukturo imenikov za naše vloge. To bomo storili v/etc/ansible/playbooks (ki smo jih ustvarili v 2. delu), vendar teoretično lahko nastavite v drug imenik, če želite.

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

Nato potrdi novo ustvarjene vloge.

# ls -R /etc/ansible/playbooks

Na zgornji sliki lahko vidimo, da je ansible-galaxy ustvaril dva imenika z istim imenom kot naše vloge in druge podimenike (privzete vrednosti, datoteke, vodniki, meta, naloge, predloge in različice) in datoteko README.md znotraj vsake njim.

Poleg tega je bila v vseh prej imenovanih imenikih ustvarjena datoteka YAML z imenom main.yml, z izjemo datotek in predlog.

Začeli bomo z urejanjem naslednjih konfiguracijskih datotek, kot je navedeno:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Upoštevajte, da vključujemo httpd, če niste upoštevali prejšnjih vadnic te serije.

---
# 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 (na voljo v tem Pastebinu), kot sledi, in ga shranite na vaš upravljalnik Ansible (kot lahko vidite v zgornji direktivi o kopiranju zgoraj, sem ga prenesel v domači imenik super uporabnika (/ root) /wp-config-sample.php).

Pomembno: upoštevajte, da so vrednosti za spremenljivke DB_NAME, DB_USER in DB_PASSWORD enake kot v /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. Za nove namestitve strežnika baz podatkov, pri katerih je korensko geslo prazno, kot je v tem primeru, moramo na žalost nastaviti geslo za uporabniški koren posebej v vsakem računalniku prek mysql_secure_installation.

Kolikor vem, ni na voljo rešitve, ki bi vam omogočila, da nastavite korensko geslo prek Ansible v istem koraku, ko ustvarite račun skrbniške baze podatkov za WordPress.

Prepričajte se, da uporabljate isto geslo pri vseh gostiteljih, nato kopirajte poverilnice v /root/.my.cnf (dejanska lokacija se lahko razlikuje v vašem primeru, vendar se mora v vseh primerih ujemati z vrednostjo parametra src za nalogo Kopirajte ~/.my.cnf na vozlišča v /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

V tej datoteki (glej zgoraj) smo domnevali, da je geslo za root YourMariaDBRootPassword.

6. Nato bo naša knjiga z igrami (/etc/ansible/playbooks/playbook.yml) v primerjavi s prejšnjo vadnico videti veliko bolj urejena in preprosta:

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

Končno je čas, da te naloge zaženete tako, da prikličete našo igro:

# ansible-playbook playbook.yml

Zdaj pa preverimo, ali imamo dostop do strani za skrbnika WordPress z uporabo naslovov IP node1 192.168.0.29 in node2 192.168.0.30:

Zadnja dva koraka si lahko ogledate v naslednjem predvajanju zaslona:

Kot lahko vidite, lahko z Ansible nastavite več namestitev WordPress z malo ali nič truda. Nato lahko z ustreznim skrbniškim uporabniškim vmesnikom konfigurirate vsako spletno mesto posebej.

Končni premisleki

Če za uvajanje WordPressa uporabljate drugo distribucijo, se ime paketov lahko razlikuje, vendar gre za namestitev spletnega strežnika Apache, strežnika baz podatkov MariaDB in modula Python MySQL. V tem primeru uporabite sistem za upravljanje programske opreme vaše distribucije, da poiščete natančno ime paketa, ki ga morate namestiti.

Povzetek

V tej seriji smo razložili, kako uporabiti Ansible za zagon ukazov in izvajanje zapletenih nalog v več računalnikih Linux hkrati.

Eden takih primerov je nastavitev WordPressa, o čemer smo govorili v tem priročniku. Ne glede na to, ali ste skrbnik sistema ali bloger, upam, da so vam koncepti in primeri v tej vadnici koristni.

Veliko sreče in ne oklevajte, če nam pišete, če potrebujete pomoč ali imate kakršne koli komentarje ali predloge!