Kako automatizirati simultanu implementaciju WordPressa na više Linux poslužitelja pomoću Ansiblea - 3. dio


U prethodna dva članka ove serije Ansible objasnili smo kako instalirati i konfigurirati Ansible za pokretanje naredbi i izvođenje složenih zadataka na nekoliko udaljenih poslužitelja istovremeno.

U trenutnom vodiču objasnit ćemo kako postaviti WordPress na istim udaljenim poslužiteljima:

node1: 192.168.0.29
node2: 192.168.0.30

gdje smo instalirali, omogućili i pokrenuli Apache (vjerojatno već znate zašto smo odabrali rad s web poslužiteljem kao početni primjer u prošlom vodiču).

Preporučujem vam da pročitate 1. dio i 2. dio prije nego što nastavite dalje kako biste bili sigurni da ste upoznati s konceptima povezanim s Ansibleom.

Kako instalirati i konfigurirati ‘Ansible’ alat za automatizaciju za IT upravljanje – 1. dio

Kako koristiti Anisble Playbooks za automatizaciju složenih zadataka na više udaljenih poslužitelja – 2. dio

Korak 1: Predstavljanje Ansible uloga

Kako počinjete dodavati sve više i više zadataka igrama, vaše Playbooks može postati sve teže rukovati. Iz tog razloga, preporučeni pristup u tim situacijama (zapravo, u svim slučajevima) je korištenje strukture direktorija koja sadrži direktive za svaku grupu zadataka u različitim datotekama.

Ovaj nam pristup omogućuje ponovnu upotrebu ovih konfiguracijskih datoteka u odvojenim projektima u budućnosti. Svaka od ovih datoteka definira ono što se u Ansible ekosustavu naziva ulogom.

U našem slučaju, stvorit ćemo dvije uloge. Jedan od njih (nazvan wp-dependencies) koristit će se za instaliranje WordPress ovisnosti (PHP i MariaDB – nema potrebe za instaliranjem Apachejer je već instaliran).

Druga uloga (nazvana wp-install-config) uključit će sve potrebne zadatke povezane s instalacijom i konfiguracijom WordPressa.

Korak 2: Stvaranje Ansible uloga

Ansible dolazi s uslužnim programom pod nazivom ansible-galaxy koji će nam pomoći da stvorimo strukturu direktorija za naše uloge. To ćemo učiniti u /etc/ansible/playbooks (koji smo stvorili u Drugom dijelu), ali u teoriji to možete postaviti u drugom direktoriju ako želite.

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

Sljedeće potvrđuje novostvorene uloge.

ls -R /etc/ansible/playbooks

Na gornjoj slici možemo vidjeti da je ansible-galaxy stvorio dva direktorija s istim imenom kao naše uloge i druge poddirektorije (defaults, files , rukovatelji, meta, zadaci, predlošci i varijable) i README.md unutar svake od njih.

Osim toga, YAML datoteka pod nazivom main.yml stvorena je unutar svih prethodno navedenih direktorija, s izuzetkom datoteka i predložaka.

Počet ćemo uređivanjem sljedećih konfiguracijskih datoteka kako je naznačeno:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Imajte na umu da smo uključili httpd u slučaju da niste pratili prethodne upute iz ove serije.

---
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 (dostavljen u ovom Pastebinu) na sljedeći način i spremite ga na svoj Ansible upravljački stroj (kao što možete vidjeti u zadnjoj direktivi za kopiranje iznad , preuzeo sam ga u matični direktorij superkorisnika (/root/wp-config-sample.php).

Važno: Imajte na umu da vrijednost za varijable DB_NAME, DB_USER i DB_PASSWORD isti su kao u /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. Za nove instalacije poslužitelja baze podataka gdje je root lozinka prazna, kao u ovom slučaju, nažalost moramo postaviti lozinku za root korisnika pojedinačno na svakom stroju putem mysql_secure_installation .

Koliko ja znam, ne postoji dostupno zaobilazno rješenje koje bi vam omogućilo postavljanje root lozinke putem Ansible u istom koraku u kojem stvarate administrativni račun baze podataka za WordPress.

Provjerite koristite li istu lozinku na svim hostovima, a zatim kopirajte vjerodajnice u /root/.my.cnf (stvarna lokacija može se razlikovati u vašem slučaju, ali u svim slučajevima mora odgovarati vrijednosti parametra src za zadatak Kopiraj ~/.my.cnf u čvorove u /etc/ansible/playbooks/wp-dependencies/tasks/main.yml ).

U toj datoteci (vidi gore) pretpostavili smo da je lozinka za root YourMariaDBRootPassword.

6. Zatim, naš priručnik (/etc/ansible/playbooks/playbook.yml) izgledat će mnogo organiziraniji i jednostavniji u usporedbi s prethodnim vodičem:

cat playbook.yml

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

Konačno, vrijeme je da pokrenete ove zadatke pozivajući se na našu knjižicu:

ansible-playbook playbook.yml

Sada provjerimo možemo li pristupiti WordPress Admin stranici koristeći IP adrese node1 192.168.0.29 i node2 192.168.0.30:

Zadnja dva koraka možete pogledati u sljedećem prikazu zaslona:

Kao što vidite, pomoću Ansible možete postaviti više instalacija WordPressa s malo ili nimalo napora. Zatim možete koristiti odgovarajuće Administratorsko korisničko sučelje za zasebno konfiguriranje svake stranice.

Završna razmatranja

Ako koristite drugu distribuciju za implementaciju WordPressa, nazivi paketa mogu varirati, ali sve se svodi na instaliranje Apache web poslužitelja, MariaDB poslužitelja baze podataka i Python MySQL modula. Ako je to slučaj, upotrijebite sustav za upravljanje softverom svoje distribucije da potražite točan naziv paketa koji trebate instalirati.

Sažetak

U ovoj smo seriji objasnili kako koristiti Ansible za pokretanje naredbi i izvršavanje složenih zadataka na nekoliko Linux strojeva istovremeno.

Jedan od takvih primjera je postavljanje WordPressa, o čemu smo govorili u ovom vodiču. Bilo da ste administrator sustava ili bloger, nadam se da su vam koncepti i primjeri u ovom vodiču bili korisni.

Puno sreće i ne ustručavajte se javiti nam ako trebate pomoć ili imate komentare ili prijedloge!