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!