Vyhledávání na webu

Jak automatizovat současné nasazení WordPressu na více linuxových serverech pomocí Ansible – část 3


V předchozích dvou článcích této série Ansible jsme vysvětlili, jak nainstalovat a nakonfigurovat Ansible pro spouštění příkazů a provádění složitých úloh na několika vzdálených serverech současně.

V aktuálním tutoriálu vysvětlíme, jak nastavit WordPress na stejných vzdálených serverech:

node1: 192.168.0.29
node2: 192.168.0.30

kde jsme nainstalovali, povolili a spustili Apache (pravděpodobně už víte, proč jsme si jako první příklad v minulém tutoriálu vybrali práci s webovým serverem).

Důrazně vám doporučuji, abyste si přečetli 1. část a část 2, než budete pokračovat dále, abyste se ujistili, že jste obeznámeni s pojmy souvisejícími s Ansible.

Jak nainstalovat a nakonfigurovat automatizační nástroj „Ansible“ pro správu IT – část 1

Jak používat Anisble Playbooks k automatizaci složitých úloh na více vzdálených serverech – část 2

Krok 1: Představení Ansible rolí

Jak začnete do her přidávat další a další úkoly, může být manipulace s vašimi Příručkami stále obtížnější. Z tohoto důvodu je doporučeným přístupem v těchto situacích (vlastně ve všech případech) použít adresářovou strukturu, která obsahuje direktivy pro každou skupinu úloh v odlišných souborech.

Tento přístup nám umožňuje znovu použít tyto konfigurační soubory v dalších samostatných projektech. Každý z těchto souborů definuje, co se v ekosystému Ansible nazývá role.

V našem případě vytvoříme dvě role. Jedna z nich (nazvaná wp-dependencies) bude použita k instalaci závislostí WordPressu (PHP a MariaDB – není třeba instalovat Apachejak je již nainstalován).

Druhá role (s názvem wp-install-config) bude zahrnovat všechny nezbytné úkoly spojené s instalací a konfigurací WordPress.

Krok 2: Vytvoření Ansible rolí

Ansible přichází s nástrojem nazvaným ansible-galaxy, který nám pomůže vytvořit adresářovou strukturu pro naše role. Uděláme to v /etc/ansible/playbooks (které jsme vytvořili v části 2), ale teoreticky to můžete nastavit v jiném adresáři, pokud chcete.

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

Další potvrdí nově vytvořené role.

ls -R /etc/ansible/playbooks

Na obrázku výše vidíme, že ansible-galaxy vytvořil dva adresáře se stejným názvem jako naše role a další podadresáře (výchozí, soubory , obslužné nástroje, meta, úkoly, šablony a vars) a README.md uvnitř každého z nich.

Kromě toho byl ve všech výše uvedených adresářích vytvořen soubor YAML s názvem main.yml, s výjimkou souborů a šablon.

Začneme úpravou následujících konfiguračních souborů, jak je uvedeno:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Všimněte si, že jsme zahrnuli httpd pro případ, že jste nesledovali předchozí výukové programy této série.

---
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 (uvedený v tomto Pastebinu) následujícím způsobem a uložte jej do svého počítače řadiče Ansible (jak můžete vidět v posledním kopírovacím příkazu výše , stáhl jsem jej do domovského adresáře superuživatele (/root/wp-config-sample.php).

Důležité: Upozorňujeme, že hodnota proměnných DB_NAME, DB_USER a DB_PASSWORD jsou stejné jako 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. U nových instalací databázového serveru, kde je heslo uživatele root prázdné, jako v tomto případě, bohužel musíme nastavit heslo pro uživatele root na každém počítači individuálně prostřednictvím mysql_secure_installation .

Pokud vím, neexistuje žádné dostupné řešení, které by vám umožnilo nastavit heslo uživatele root prostřednictvím Ansible ve stejném kroku, kdy vytváříte účet pro administrátorskou databázi pro WordPress.

Ujistěte se, že používáte stejné heslo ve všech hostitelích, a poté zkopírujte přihlašovací údaje do /root/.my.cnf (skutečné umístění se může ve vašem případě lišit, ale ve všech případech musí odpovídat hodnotě parametru src pro úlohu Kopírovat ~/.my.cnf do uzlů v /etc/ansible/playbooks/wp-dependencies/tasks/main.yml ).

V tomto souboru (viz výše) jsme předpokládali, že heslo pro root je YourMariaDBRootPassword.

6. Dále bude naše příručka (/etc/ansible/playbooks/playbook.yml) ve srovnání s předchozím tutoriálem vypadat mnohem lépe a jednodušeji:

cat playbook.yml

- hosts: webservers
  roles:
        - wp-dependencies
        - wp-install-config

Konečně je čas spustit tyto úkoly pomocí naší příručky:

ansible-playbook playbook.yml

Nyní zkontrolujeme, zda můžeme přistupovat na stránku správce WordPress pomocí IP adres node1 192.168.0.29 a node2 192.168.0.30:

Poslední dva kroky si můžete prohlédnout v následujícím screencastu:

Jak vidíte, pomocí Ansible můžete nastavit více instalací WordPress s malým nebo žádným úsilím. Poté můžete pomocí příslušného uživatelského rozhraní Admin nakonfigurovat každý web zvlášť.

Závěrečné úvahy

Pokud k nasazení WordPress používáte jinou distribuci, názvy balíčků se mohou lišit, ale záleží na instalaci webového serveru Apache, databázového serveru MariaDB a modulu Python MySQL. V takovém případě použijte systém správy softwaru vaší distribuce k vyhledání přesného názvu balíčku, který potřebujete nainstalovat.

souhrn

V této sérii jsme vysvětlili, jak používat Ansible ke spouštění příkazů a provádění složitých úloh na několika počítačích Linux současně.

Jedním z takových příkladů je nastavení WordPress, jak jsme probrali v této příručce. Ať už jste správce systému nebo blogger, doufám, že vám koncepty a příklady v tomto návodu byly užitečné.

Hodně štěstí a neváhejte nám napsat, pokud potřebujete pomoc nebo máte nějaké připomínky nebo návrhy!