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!