Wéi automatiséiert Dir simultan WordPress Deployments a Multiple Linux Serveren mat Ansible - Deel 3


An de fréieren zwee Artikelen vun dëser Ansible Serie hu mir erkläert wéi Dir Ansible installéiere an konfiguréieren fir Kommandoen auszeféieren a komplex Aufgaben a verschiddene Fernserveren gläichzäiteg auszeféieren.

Am aktuellen Tutorial wäerte mir erkläre wéi Dir WordPress an de selwechte Fernserver opstellt:

node1: 192.168.0.29
node2: 192.168.0.30

wou mir Apache installéiert, aktivéiert an ugefaang hunn (Dir wësst wahrscheinlech elo firwat mir gewielt hunn mat engem Webserver als initial Beispill am leschten Tutorial ze schaffen).

Ech encouragéieren Iech staark den Deel 1 an den Deel 2 ze liesen ier Dir weider geet fir sécher ze stellen datt Dir vertraut sidd mat de Konzepter verbonne mat Ansible.

Schrëtt 1: Aféierung Ansible Rollen

Wéi Dir ufänkt méi a méi Aufgaben op Spiller ze addéieren, kënnen Är Playbooks ëmmer méi schwéier ze handhaben. Aus deem Grond ass d'recommandéiert Approche an dëse Situatiounen (eigentlech an alle Fäll) eng Verzeechnesstruktur ze benotzen déi d'Direktiven fir all Grupp vun Aufgaben a verschiddene Dateien enthält.

Dës Approche erlaabt eis dës Konfiguratiounsdateien an getrennte Projete méi wäit ewech ze benotzen. Jiddereng vun dësen Dateien definéieren wat am Ansible Ökosystem eng Roll genannt gëtt.

An eisem Fall wäerte mir zwou Rollen erstellen. Ee vun hinnen (genannt wp-Ofhängegkeeten) gëtt benotzt fir d'WordPress Ofhängegkeeten ze installéieren (PHP a MariaDB - net néideg Apache z'installéieren well et scho installéiert ass).

Déi aner Roll (genannt wp-install-config) enthält all déi néideg Aufgaben, déi mat der Installatioun an der Konfiguratioun vu WordPress verbonne sinn.

Schrëtt 2: Ansible Rollen erstellen

Ansible kënnt mat engem Utility genannt ansible-Galaxis deen eis hëlleft d'Verzeechnesstruktur fir eis Rollen ze kreéieren. Mir maachen dat an /etc/ansible/playbooks (déi mir am Deel 2 erstallt hunn) awer an der Theorie kënnt Dir et an engem anere Verzeechnes opsetzen wann Dir wëllt.

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

Nächst bestätegt déi nei geschaf Rollen.

# ls -R /etc/ansible/playbooks

Am uewe genannte Bild kënne mir gesinn datt d'Ansible-Galaxis zwee Verzeichnisser mam selwechten Numm wéi eis Rollen erstallt huet, an aner Ënnerverzeechnungen (Default, Dateien, Handler, Meta, Aufgaben, Templates a Vars) an eng README.md Datei an all eenzel vun hinnen.

Zousätzlech gouf eng YAML-Datei mam Numm main.yml an all de Verzeichnisser erstallt, déi virdru opgelëscht sinn, mat Ausnam vu Dateien a Templates.

Mir fänken un mat der Ännerung vun de folgende Konfiguratiounsdateien wéi uginn:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Notéiert datt mir httpd enthalen am Fall wou Dir net mat de fréiere Tutorials vun dëser Serie gefollegt hutt.

---
# 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 (an dësem Pastebin geliwwert) wéi follegt a späichert et op Är Ansible Controller Maschinn (wéi Dir kënnt an der leschter Kopie Direktiv hei uewen gesinn, ech hunn et an den Heemverzeichnis vum Superuser erofgelueden (/root) /wp-config-sample.php).

Wichteg: Notéiert w.e.g. datt de Wäert fir Variablen DB_NAME, DB_USER an DB_PASSWORD d'selwecht sinn wéi an /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. Fir nei Datebankserverinstallatiounen wou d'Root Passwuert eidel ass, wéi an dësem Fall, musse mir leider d'Passwuert fir Benotzerroot individuell an all Maschinn duerch mysql_secure_installation astellen.

Sou wäit wéi ech weess, gëtt et keng verfügbar Léisung déi Iech erlaabt d'Root Passwuert iwwer Ansible opzestellen an deemselwechte Schrëtt wou Dir den administrativen Datebankkonto fir WordPress erstellt.

Vergewëssert Iech datt Dir datselwecht Passwuert an all Hosten benotzt, kopéiert dann d'Umeldungsinformatiounen an /root/.my.cnf (déi tatsächlech Plaz kann an Ärem Fall ënnerscheeden, awer an alle Fäll muss et dem Wäert vum src Parameter fir d'Aufgab passen. Kopéiert ~/.my.cnf op Noden an /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

An dëser Datei (kuckt hei uewen) hu mir ugeholl datt d'Passwuert fir root YourMariaDBRootPassword ass.

6. Als nächst wäert eist Spillbuch (/etc/ansible/playbooks/playbook.yml) vill méi organiséiert an einfach ausgesinn am Verglach zum virdrun Tutorial:

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

Endlech ass et Zäit dës Aufgaben auszeféieren andeems Dir eist Spillbuch oprufft:

# ansible-playbook playbook.yml

Loosst eis elo kucken ob mir op d'WordPress Admin Säit mat den IP Adressen vum node1 192.168.0.29 an node2 192.168.0.30 zougräifen:

Dir kënnt déi lescht zwee Schrëtt am folgenden Screencast kucken:

Wéi Dir gesitt, kënnt Dir verschidde WordPress Installatiounen opbauen mat wéineg bis keen Effort mat Ansible. Da kënnt Dir déi jeeweileg Admin User Interface benotze fir all Site separat ze konfiguréieren.

Finale Considératiounen

Wann Dir eng aner Verdeelung benotzt fir WordPress z'installéieren, kann de Package Numm variéieren, awer et kënnt erof op d'Installatioun vum Apache Webserver, de MariaDB Datebankserver, an de Python MySQL Modul. Wann dat de Fall ass, benotzt Äre Software Management System vun Ärer Verdeelung fir de genaue Packagenumm ze sichen deen Dir installéiere musst.

Resumé

An dëser Serie hu mir erkläert wéi Dir Ansible benotzt fir Kommandoen auszeféieren a komplex Aufgaben a verschiddene Linux Maschinnen gläichzäiteg auszeféieren.

Ee vun esou Beispiller ass WordPress opzestellen, wéi mir an dësem Guide diskutéiert hunn. Egal ob Dir e Systemadministrator oder e Blogger sidd, ech hoffen Dir hutt d'Konzepter an d'Beispiller an dësem Tutorial nëtzlech fonnt.

Vill Gléck an zéckt net eis eng Zeil ze schécken wann Dir Hëllef braucht oder Kommentarer oder Virschléi hutt!