Hvernig á að gera sjálfvirkan samtímis WordPress dreifingu á mörgum Linux netþjónum með því að nota Ansible - Part 3


Í fyrri tveimur greinum þessarar Ansible röð útskýrðum við hvernig á að setja upp og stilla Ansible til að keyra skipanir og framkvæma flókin verkefni á nokkrum ytri netþjónum samtímis.

Í núverandi kennslu munum við útskýra hvernig á að setja upp WordPress á sömu ytri netþjónum:

node1: 192.168.0.29
node2: 192.168.0.30

þar sem við settum upp, kveiktum og ræstum Apache (þú veist líklega núna hvers vegna við völdum að vinna með vefþjón sem upphafsdæmi í síðasta kennsluefni).

Ég hvet þig eindregið til að lesa hluta 1 og hluta 2 áður en lengra er haldið til að ganga úr skugga um að þú þekkir hugtökin sem tengjast Ansible.

Skref 1: Kynning á Ansible hlutverkum

Eftir því sem þú byrjar að bæta fleiri og fleiri verkefnum við leikrit getur leikbókin þín orðið sífellt erfiðari í meðförum. Af þeirri ástæðu er ráðlögð nálgun í þessum aðstæðum (reyndar í öllum tilfellum) að nota möppuskipulag sem inniheldur tilskipanir fyrir hvern hóp verkefna í sérstökum skrám.

Þessi nálgun gerir okkur kleift að endurnýta þessar stillingarskrár í aðskildum verkefnum lengra á veginum. Hver þessara skráa skilgreinir það sem kallað er í Ansible vistkerfinu hlutverk.

Í okkar tilviki munum við búa til tvö hlutverk. Ein þeirra (kallað wp-háð) verður notuð til að setja upp WordPress ósjálfstæði (PHP og MariaDB – engin þörf á að setja upp Apache þar sem það er þegar uppsett).

Hitt hlutverkið (sem heitir wp-install-config) mun innihalda öll nauðsynleg verkefni sem tengjast uppsetningu og stillingu WordPress.

Skref 2: Að búa til Ansible hlutverk

Ansible kemur með tól sem kallast ansible-galaxy sem mun hjálpa okkur að búa til möppuskipulag fyrir hlutverkin okkar. Við munum gera þetta í /etc/ansible/playbooks (sem við bjuggum til í Part 2) en í orði geturðu sett það upp í annarri möppu ef þú vilt.

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

Næst staðfestir nýstofnað hlutverk.

# ls -R /etc/ansible/playbooks

Á myndinni hér að ofan getum við séð að ansible-galaxy bjó til tvær möppur með sama nafni og hlutverkin okkar, og aðrar undirmöppur (sjálfgefin, skrár, meðhöndlarar, meta, verkefni, sniðmát og vars) og README.md skrá í hverri af þeim.

Að auki var YAML skrá sem heitir main.yml búin til í öllum möppunum sem taldar voru upp áðan, að undanskildum skrám og sniðmátum.

Við munum byrja á því að breyta eftirfarandi stillingarskrám eins og tilgreint er:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Athugaðu að við tökum httpd með ef þú hefur ekki fylgst með fyrri námskeiðum í þessari röð.

---
# 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 (að finna í þessu Pastebin) eins og hér segir og vistaðu það á Ansible stjórnandi vélinni þinni (eins og þú sérð í síðustu afritunartilskipuninni hér að ofan, ég hlaðið henni niður í heimamöppu ofurnotandans (/root) /wp-config-sample.php).

Mikilvægt: Vinsamlegast athugaðu að gildið fyrir breyturnar DB_NAME, DB_USER og DB_PASSWORD eru það sama og í /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. Fyrir nýjar uppsetningar gagnagrunnsþjóna þar sem rótarlykilorðið er tómt, eins og í þessu tilfelli, þurfum við því miður að setja upp lykilorðið fyrir notandarót fyrir sig í hverri vél í gegnum mysql_secure_installation.

Eftir því sem ég best veit er engin tiltæk lausn sem gerir þér kleift að setja upp rótarlykilorðið í gegnum Ansible í sama skrefi og þú býrð til stjórnunargagnagrunnsreikninginn fyrir WordPress.

Gakktu úr skugga um að þú notir sama lykilorð í öllum vélum, afritaðu síðan skilríkin í /root/.my.cnf (raunveruleg staðsetning getur verið mismunandi í þínu tilviki, en í öllum tilvikum þarf hún að passa við gildi src færibreytunnar fyrir verkefnið Afritaðu ~/.my.cnf í hnúta í /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

Í þeirri skrá (sjá hér að ofan) höfum við gert ráð fyrir að lykilorðið fyrir rót sé YourMariaDBRootPassword.

6. Næst mun leikbókin okkar (/etc/ansible/playbooks/playbook.yml) líta miklu skipulagðari og einfaldari út í samanburði við fyrri kennslu:

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

Að lokum er kominn tími til að keyra þessi verkefni með því að kalla fram leikbókina okkar:

# ansible-playbook playbook.yml

Nú skulum við athuga hvort við getum nálgast WordPress Admin síðuna með því að nota IP tölur hnút1 192.168.0.29 og hnút2 192.168.0.30:

Þú getur skoðað síðustu tvö skrefin í eftirfarandi skjávarpi:

Eins og þú sérð geturðu sett upp margar WordPress uppsetningar með lítilli sem engri fyrirhöfn með því að nota Ansible. Síðan geturðu notað viðkomandi Admin notendaviðmót til að stilla hverja síðu fyrir sig.

Lokaatriði

Ef þú ert að nota aðra dreifingu til að dreifa WordPress getur nafn pakkans verið breytilegt, en það kemur niður á því að setja upp Apache vefþjóninn, MariaDB gagnagrunnsþjóninn og Python MySQL eininguna. Ef það er raunin, notaðu hugbúnaðarstjórnunarkerfi dreifingarinnar til að leita að nákvæmlega pakkanafni sem þú þarft að setja upp.

Samantekt

Í þessari röð höfum við útskýrt hvernig á að nota Ansible til að keyra skipanir og framkvæma flókin verkefni í nokkrum Linux vélum samtímis.

Eitt af slíkum dæmum er uppsetning WordPress eins og við höfum fjallað um í þessari handbók. Hvort sem þú ert kerfisstjóri eða bloggari, vona ég að þér hafi fundist hugtökin og dæmin í þessari kennslu gagnleg.

Gangi þér sem best og ekki hika við að senda okkur línu ef þig vantar aðstoð eða hefur einhverjar athugasemdir eða ábendingar!