Kako automatizirati istovremenu implementaciju WordPress-a na više Linux servera koristeći Ansible - dio 3


U prethodna dva članka ove serije Ansible objasnili smo kako da instalirate i konfigurišete Ansible za pokretanje komandi i izvršavanje složenih zadataka na nekoliko udaljenih servera istovremeno.

U trenutnom vodiču ćemo objasniti kako postaviti WordPress na istim udaljenim serverima:

node1: 192.168.0.29
node2: 192.168.0.30

gdje smo instalirali, omogućili i pokrenuli Apache (vjerovatno već znate zašto smo odabrali rad sa web serverom kao početni primjer u prošlom tutorijalu).

Preporučujem vam da pročitate Dio 1 i Dio 2 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 servera – 2. dio

Korak 1: Uvođenje Ansible uloga

Kako počnete da dodajete sve više zadataka u predstave, 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 pristup nam omogućava da ponovo koristimo ove konfiguracijske datoteke u odvojenim projektima dalje na putu. Svaka od ovih datoteka definira ono što se u Ansible ekosistemu zove uloga.

U našem slučaju ćemo kreirati dvije uloge. Jedna od njih (nazvana wp-zavisnosti) će se koristiti za instalaciju WordPress zavisnosti (PHP i MariaDB – nema potrebe za instalacijom Apachekao što je već instaliran).

Druga uloga (nazvana wp-install-config) će uključivati sve potrebne zadatke povezane sa instalacijom i konfiguracijom WordPress-a.

Korak 2: Kreiranje Ansible uloga

Ansible dolazi sa uslužnim programom pod nazivom ansible-galaxy koji će nam pomoći da kreiramo strukturu direktorija za naše uloge. To ćemo učiniti u /etc/ansible/playbooks (koji smo kreirali u Drugom dijelu), ali u teoriji možete ga postaviti u drugi direktorij ako želite.

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

Dalje potvrđuje novostvorene uloge.

ls -R /etc/ansible/playbooks

Na gornjoj slici možemo vidjeti da je ansible-galaxy kreirao dva direktorija s istim imenom kao i naše uloge, i druge poddirektorije (zadano, datoteke , upravljači, meta, zadaci, šabloni i varovi) i README.md fajl unutar svakog od njih.

Osim toga, YAML datoteka pod nazivom main.yml je kreirana unutar svih direktorija navedenih ranije, s izuzetkom datoteka i šablona.

Započećemo s uređivanjem sljedećih konfiguracijskih datoteka kako je naznačeno:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Imajte na umu da uključujemo httpd u slučaju da niste pratili prethodne tutorijale 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 (naveden u ovom Pastebin-u) kako slijedi i sačuvajte ga na vašem Ansible kontroleru (kao što možete vidjeti u posljednjoj direktivi kopiranja iznad , preuzeo sam ga u početni 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 servera baze podataka gdje je root lozinka prazna, kao što je u ovom slučaju, nažalost moramo podesiti lozinku za root korisnika pojedinačno na svakom stroju putem mysql_secure_installation .

Koliko ja znam, ne postoji dostupno rješenje koje će vam omogućiti da postavite root lozinku putem Ansible u istom koraku u kojem kreirate administrativni račun baze podataka za WordPress.

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

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

6. Dalje, naš priručnik (/etc/ansible/playbooks/playbook.yml) će izgledati mnogo organizovanije i jednostavnije u poređenju sa prethodnim vodičem:

cat playbook.yml

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

Konačno, vrijeme je da pokrenete ove zadatke pozivanjem našeg priručnika:

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:

Posljednja dva koraka možete pogledati u sljedećem screencastu:

Kao što vidite, pomoću Ansible-a možete postaviti više instalacija WordPress-a uz malo ili bez napora. Zatim možete koristiti odgovarajući Admin korisnički interfejs da konfigurišete svaku stranicu zasebno.

Završna razmatranja

Ako koristite drugu distribuciju za implementaciju WordPressa, nazivi paketa mogu varirati, ali se svodi na instaliranje Apache web servera, MariaDB servera baze podataka i Python MySQL modula. Ako je to slučaj, koristite sistem upravljanja softverom vaše distribucije da potražite tačan naziv paketa koji trebate instalirati.

Sažetak

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

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

Sretno i ne ustručavajte se javiti nam se ako trebate pomoć ili imate bilo kakve komentare ili prijedloge!