Kuidas automatiseerida WordPressi samaaegset juurutamist mitmetes Linuxi serverites rakenduse Ansible abil - 3. osa
Selle Ansible seeria kahes eelmises artiklis selgitasime, kuidas installida ja konfigureerida Ansible käskude käivitamiseks ja keeruliste ülesannete samaaegseks täitmiseks mitmes kaugserveris.
Praeguses õpetuses selgitame, kuidas WordPress seadistada samadesse kaugserveritesse:
node1: 192.168.0.29 node2: 192.168.0.30
kuhu me Apache installisime, lubasime ja käivitasime (ilmselt teate juba praegu, miks valisime viimases õpetuses esmase näitena töötamise veebiserveriga).
Soovitan teil tungivalt enne jätkamist lugeda 1. ja 2. osa, et veenduda, et olete mõistetavad rakendusega Ansible seotud mõisted.
1. samm: anonüümsete rollide tutvustamine
Kui hakkate näidenditele järjest rohkem ülesandeid lisama, võib teie Playbooks olla üha raskem käsitseda. Sel põhjusel on sellistes olukordades (tegelikult kõigil juhtudel) soovitatav lähenemisviis kasutada kataloogistruktuuri, mis sisaldab käskkirju iga ülesannete rühma jaoks eraldi failides.
See lähenemine võimaldab meil neid konfiguratsioonifaile taaskasutada eraldi projektides, mis jäävad teele. Kõik need failid määratlevad selle, mida nimetatakse võimalikus ökosüsteemis rolliks.
Meie puhul loome kaks rolli. Ühte neist (nn wp-sõltuvusi) kasutatakse WordPressi sõltuvuste installimiseks (PHP ja MariaDB - Apache'i pole vaja installida, kuna see on juba installitud).
Teine roll (nimega wp-install-config) sisaldab kõiki vajalikke ülesandeid, mis on seotud WordPressi installimise ja seadistamisega.
2. samm: anonüümsete rollide loomine
Ansible on varustatud utiliidiga, mida nimetatakse ansible-galaxy, mis aitab meil luua oma rollide kataloogistruktuuri. Teeme seda kataloogis/etc/ansible/playbooks (mille lõime 2. osas), kuid teoreetiliselt saate selle soovi korral seadistada mõnes teises kataloogis.
# cd /etc/ansible/playbooks # ansible-galaxy init wp-dependencies # ansible-galaxy init wp-install-config
Järgmine kinnitab vastloodud rollid.
# ls -R /etc/ansible/playbooks
Ülaltoodud pildil näeme, et ansible-galaxy lõi kaks kataloogi sama nimega nagu meie rollid, ja muud alamkataloogid (vaikeväärtused, failid, käitlejad, meta, ülesanded, mallid ja vars) ning faili README.md neid.
Lisaks loodi kõigis varem loetletud kataloogides YAML-fail nimega main.yml, välja arvatud failid ja mallid.
Alustame järgmiste konfiguratsioonifailide muutmisega, nagu näidatud:
1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Pange tähele, et kaasame ka httpd juhuks, kui te pole järginud selle sarja eelmisi õpetusi.
--- # 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 (pakutakse selles Pastebinis) järgmiselt ja salvestage see oma Ansible kontrolleri masinasse (nagu näete ülaltoodud viimases koopiadirektiivis, laadisin selle alla superkasutaja kodukataloogi (/ root /wp-config-sample.php).
NB! Pange tähele, et muutujate DB_NAME, DB_USER ja DB_PASSWORD väärtus on sama, mis failides /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. Uute andmebaasiserveri installatsioonide korral, kus juurparool on tühi, nagu antud juhul, peame kahjuks seadistama kasutaja juur parooli eraldi iga masina kaudu mysql_secure_installation abil.
Niipalju kui ma tean, pole ühtegi lahendust, mis võimaldaks teil seadistada juurparooli Ansible'i kaudu samasse sammu, kus loote WordPressi haldusandmebaasi konto.
Veenduge, et kasutate kõigis hostides sama parooli, seejärel kopeerige mandaat kausta /root/.my.cnf (tegelik asukoht võib teie puhul erineda, kuid kõigil juhtudel peab see vastama ülesande src parameetri väärtusele Kopeerige ~/.my.cnf sõlmedesse jaotises /etc/ansible/playbooks/wp-dependencies/tasks/main.yml).
Selles failis (vt eespool) oleme eeldanud, et root parool on YourMariaDBRootPassword.
6. Järgmisena näeb meie mänguraamat (/etc/ansible/playbooks/playbook.yml) eelmise juhendajaga võrreldes palju korrastatum ja lihtsam välja:
# cat playbook.yml
- hosts: webservers roles: - wp-dependencies - wp-install-config
Lõpuks on aeg nende ülesannete täitmiseks meie esiraamatut kasutades:
# ansible-playbook playbook.yml
Kontrollime nüüd, kas pääseme WordPressi administraatori lehele juurde, kasutades sõlme1 192.168.0.29 ja sõlme2 192.168.0.30 IP-aadresse:
Järgmist ekraanikuva saate vaadata kahte viimast sammu:
Nagu näete, saate Ansible abil seadistada mitu WordPressi installimist vähese vaevata. Seejärel saate iga saidi eraldi konfigureerimiseks kasutada vastavat administraatori kasutajaliidest.
Lõppkaalutlused
Kui kasutate WordPressi juurutamiseks mõnda muud levitamist, võib pakettide nimi erineda, kuid see sõltub Apache veebiserveri, MariaDB andmebaasiserveri ja Pythoni MySQL-i mooduli installimisest. Sel juhul otsige paketi täpse nime installimiseks oma levitamise tarkvarahaldussüsteemi.
Kokkuvõte
Selles seerias oleme selgitanud, kuidas kasutada rakendust Ansible käskude käivitamiseks ja keerukate ülesannete täitmiseks samaaegselt mitmes Linuxi masinas.
Üks sellistest näidetest on WordPressi seadistamine, nagu oleme selles juhendis arutanud. Olenemata sellest, kas olete süsteemiadministraator või ajaveebipidaja, loodan, et leiate selle õpetuse mõisted ja näited kasulikuks.
Palju õnne ja ärge kartke meile joont anda, kui vajate abi või kui teil on kommentaare või ettepanekuid!