Kā automatizēt vienlaicīgu WordPress izvietošanu vairākos Linux serveros, izmantojot Ansible - 3. daļa


Iepriekšējos divos šīs Ansible sērijas rakstos mēs paskaidrojām, kā instalēt un konfigurēt Ansible, lai vienlaikus palaistu komandas un veiktu sarežģītus uzdevumus vairākos attālajos serveros.

Pašreizējā apmācībā mēs paskaidrosim, kā iestatīt WordPress tajos pašos attālos serveros:

node1: 192.168.0.29
node2: 192.168.0.30

kur mēs instalējām, iespējojām un palaidām Apache (jūs, iespējams, jau zināt, kāpēc mēs izvēlējāmies strādāt ar tīmekļa serveri kā sākotnējo piemēru pēdējā apmācībā).

Es ļoti iesaku pirms turpmākas darbības izlasīt 1. un 2. daļu, lai pārliecinātos, ka esat iepazinies ar jēdzieniem, kas saistīti ar Ansible.

1. solis: Iepazīstināšana ar iespējamām lomām

Sākot pievienot spēlēm arvien vairāk uzdevumu, jūsu Play grāmatas var kļūt arvien grūtāk apstrādāt. Šī iemesla dēļ ieteicamā pieeja šajās situācijās (faktiski visos gadījumos) ir direktoriju struktūras izmantošana, kurā katrai uzdevumu grupai atsevišķās datnēs ir ietvertas direktīvas.

Šī pieeja ļauj mums atkārtoti izmantot šos konfigurācijas failus atsevišķos projektos tālāk. Katrs no šiem failiem definē to, ko Ansible ekosistēmā sauc par lomu.

Mūsu gadījumā mēs izveidosim divas lomas. Vienu no tiem (sauktu par wp-dependencies) izmantos WordPress atkarību instalēšanai (PHP un MariaDB - nav nepieciešams instalēt Apache, jo tas jau ir instalēts).

Otra loma (saukta wp-install-config) ietvers visus nepieciešamos uzdevumus, kas saistīti ar WordPress instalēšanu un konfigurēšanu.

2. solis: Anonīmu lomu izveide

Ansible nāk ar utilītu, ko sauc par ansible-galaxy, kas mums palīdzēs izveidot direktoriju struktūru mūsu lomām. Mēs to darīsim mapē/etc/ansible/playbooks (ko mēs izveidojām 2. daļā), bet teorētiski jūs to varat iestatīt citā direktorijā, ja vēlaties.

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

Nākamais apstiprina jaunizveidotās lomas.

# ls -R /etc/ansible/playbooks

Iepriekš redzamajā attēlā mēs varam redzēt, ka ansible-galaxy izveidoja divus direktorijus ar tādu pašu nosaukumu kā mūsu lomas, un citus apakšdirektorijus (noklusējumus, failus, apstrādātājus, meta, uzdevumus, veidnes un vars) un README.md failu katrā no tiem. tos.

Turklāt visos iepriekš uzskaitītajos direktorijos, izņemot failus un veidnes, tika izveidots YAML fails ar nosaukumu main.yml.

Mēs sāksim rediģēt šādus konfigurācijas failus, kā norādīts:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Ņemiet vērā, ka mēs iekļaujam vietni httpd, ja neesat ievērojis šīs sērijas iepriekšējās apmācības.

---
# 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 (paredzēts šajā Pastebin) šādi un saglabājiet to savā Ansible kontroliera mašīnā (kā redzat iepriekšējā kopiju direktīvā iepriekš, es to lejupielādēju superlietotāja mājas direktorijā (/ root /wp-config-sample.php).

Svarīgi: Lūdzu, ņemiet vērā, ka mainīgo DB_NAME, DB_USER un DB_PASSWORD vērtība ir tāda pati kā /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. Jaunām datu bāzes servera instalācijām, kurās saknes parole ir tukša, piemēram, šajā gadījumā, diemžēl mums ir jāiestata lietotāja root parole katrā mašīnā atsevišķi, izmantojot mysql_secure_installation.

Cik es zinu, nav pieejams risinājums, kas ļautu iestatīt saknes paroli, izmantojot Ansible, tajā pašā solī, kurā izveidojat administratīvās datu bāzes kontu programmai WordPress.

Pārliecinieties, vai visos resursdatoros izmantojat vienu un to pašu paroli, pēc tam nokopējiet akreditācijas datus mapē /root/.my.cnf (faktiskā atrašanās vieta jūsu gadījumā var atšķirties, taču visos gadījumos tai jāatbilst uzdevuma src parametra vērtībai. Kopējiet ~/.my.cnf mezglos mapē /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).

Šajā failā (skat. Iepriekš) mēs esam pieņēmuši, ka root parole ir YourMariaDBRootPassword.

6. Pēc tam mūsu spēļu grāmata (/etc/ansible/playbooks/playbook.yml) izskatīsies daudz organizētāka un vienkāršāka, salīdzinot ar iepriekšējo apmācību:

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

Visbeidzot, ir pienācis laiks izpildīt šos uzdevumus, izmantojot mūsu spēļu grāmatu:

# ansible-playbook playbook.yml

Tagad pārbaudīsim, vai mēs varam piekļūt WordPress administratora lapai, izmantojot 1. mezgla 192.168.0.29 un 2. mezgla 192.168.0.30 IP adreses:

Divas pēdējās darbības varat skatīt šajā ekrānuzņēmumā:

Kā redzat, izmantojot Ansible, jūs varat iestatīt vairākas WordPress instalācijas bez mazām piepūles. Tad jūs varat izmantot attiecīgo administratora lietotāja saskarni, lai konfigurētu katru vietni atsevišķi.

Nobeiguma apsvērumi

Ja WordPress izvietošanai izmantojat citu izplatīšanu, pakotņu nosaukums var atšķirties, bet tas ir saistīts ar Apache tīmekļa servera, MariaDB datu bāzes servera un Python MySQL moduļa instalēšanu. Šādā gadījumā izmantojiet izplatīšanas programmatūras pārvaldības sistēmu, lai meklētu precīzu pakotnes nosaukumu, kas jāinstalē.

Kopsavilkums

Šajā sērijā mēs esam paskaidrojuši, kā izmantot Ansible komandu izpildei un sarežģītu uzdevumu izpildei vienlaikus vairākās Linux mašīnās.

Viens no šādiem piemēriem ir WordPress iestatīšana, kā mēs esam apsprieduši šajā rokasgrāmatā. Neatkarīgi no tā, vai esat sistēmas administrators vai blogeris, es ceru, ka šīs apmācības jēdzieni un piemēri jums ir noderīgi.

Veiksmi un nevilcinieties atteikties no mums, ja jums nepieciešama palīdzība vai jums ir kādi komentāri vai ieteikumi!