Kaip automatizuoti vienalaikį „WordPress“ diegimą keliuose „Linux“ serveriuose naudojant „Ansible“ – 3 dalis


Ankstesniuose dviejuose šios serijos Ansible straipsniuose paaiškinome, kaip įdiegti ir sukonfigūruoti Ansible, kad vienu metu vyktų komandos ir atliktų sudėtingas užduotis keliuose nuotoliniuose serveriuose.

Dabartinėje mokymo programoje paaiškinsime, kaip nustatyti WordPress tuose pačiuose nuotoliniuose serveriuose:

node1: 192.168.0.29
node2: 192.168.0.30

kur įdiegėme, įgalinome ir paleidome „Apache“ (turbūt jau žinote, kodėl pasirinkome dirbti su žiniatinklio serveriu kaip pradinį pavyzdį paskutinėje pamokoje).

Labai raginu perskaityti 1 dalį ir 2 dalį prieš tęsdami toliau, kad įsitikintumėte, jog esate susipažinę su „Ansible“ sąvokomis.

Kaip įdiegti ir konfigūruoti IT valdymo automatizavimo įrankį „Galimas“ – 1 dalis

Kaip naudoti „Anisble Playbooks“ sudėtingoms užduotims automatizuoti keliuose nuotoliniuose serveriuose – 2 dalis

1 veiksmas: pristatykite galimus vaidmenis

Kai prie pjesių pradedate pridėti vis daugiau užduočių, jūsų žaidimų knygelės gali tapti vis sunkiau tvarkomos. Dėl šios priežasties rekomenduojamas metodas tose situacijose (iš tikrųjų visais atvejais) yra naudoti katalogo struktūrą, kurioje būtų nurodymai kiekvienai užduočių grupei atskiruose failuose.

Šis metodas leidžia mums pakartotinai naudoti šiuos konfigūracijos failus atskiruose projektuose toliau. Kiekvienas iš šių failų apibrėžia, kas Nepakankama ekosistemoje vadinama vaidmeniu.

Mūsų atveju kursime du vaidmenis. Vienas iš jų (vadinamas wp-priklausomybėmis) bus naudojamas diegti „WordPress“ priklausomybes (PHP ir MariaDB – nereikia diegti Apache, nes ji jau įdiegta).

Kitas vaidmuo (pavadintas wp-install-config) apims visas būtinas užduotis, susijusias su „WordPress“ diegimu ir konfigūravimu.

2 veiksmas: galimų vaidmenų kūrimas

Ansible pateikiama su programa, pavadinta ansible-galaxy, kuri padės mums sukurti mūsų vaidmenų katalogo struktūrą. Tai padarysime /etc/ansible/playbooks (kurį sukūrėme 2 dalyje), bet teoriškai galite nustatyti jį kitame kataloge, jei norite.

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

Kitas patvirtina naujai sukurtus vaidmenis.

ls -R /etc/ansible/playbooks

Aukščiau pateiktame paveikslėlyje matome, kad ansible-galaxy sukūrė du katalogus tokiu pačiu pavadinimu kaip ir mūsų vaidmenys, ir kitus pakatalogius (numatytieji, failai , tvarkyklės, meta, užduotys, šablonai ir vars) ir README.md failą kiekvienoje iš jų.

Be to, visuose anksčiau išvardytuose kataloguose, išskyrus failus ir šablonus, buvo sukurtas YAML failas, pavadintas main.yml.

Pradėsime redaguodami šiuos konfigūracijos failus, kaip nurodyta:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Atminkite, kad įtraukiame httpd, jei nesilaikėte ankstesnių šios serijos mokymo programų.

---
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 (pateikta šioje įdėkloje) taip, kaip nurodyta toliau, ir išsaugokite jį savo Ansible valdiklio įrenginyje (kaip matote anksčiau pateiktoje paskutinės kopijos direktyvoje , atsisiunčiau jį į supervartotojo pagrindinį katalogą (/root/wp-config-sample.php).

Svarbu: atminkite, kad kintamųjų DB_NAME, DB_USER ir DB_PASSWORD reikšmė > yra tokie patys kaip /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. Naujiems duomenų bazės serveriams, kuriuose root slaptažodis yra tuščias, pvz., šiuo atveju, deja, kiekviename įrenginyje turime nustatyti vartotojo root slaptažodį atskirai naudodami mysql_secure_installation .

Kiek aš žinau, nėra jokio sprendimo, kuris leistų nustatyti pagrindinį slaptažodį per Ansible atliekant tą patį veiksmą, kai sukuriate „WordPress“ administracinės duomenų bazės paskyrą.

Įsitikinkite, kad naudojate tą patį slaptažodį visose prieglobose, tada nukopijuokite kredencialus į /root/.my.cnf (tikroji vieta jūsų atveju gali skirtis, bet visais atvejais ji turi atitikti vertę parametro src užduočiai Kopijuoti ~/.my.cnf į mazgus, esančius /etc/ansible/playbooks/wp-dependencies/tasks/main.yml ).

Tame faile (žr. aukščiau) padarėme prielaidą, kad root slaptažodis yra YourMariaDBRootPassword.

6. Be to, mūsų vadovėlis (/etc/ansible/playbooks/playbook.yml) atrodys daug tvarkingesnis ir paprastesnis, palyginti su ankstesne mokymo programa:

cat playbook.yml

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

Galiausiai atėjo laikas atlikti šias užduotis pasinaudojant mūsų planu:

ansible-playbook playbook.yml

Dabar patikrinkime, ar galime pasiekti „WordPress“ administratoriaus puslapį naudodami 1 mazgo 192.168.0.29 ir node2 192.168.0.30 IP adresus:

Paskutinius du veiksmus galite peržiūrėti toliau pateiktoje ekrano laidoje:

Kaip matote, naudodami Ansible galite be didelių pastangų arba be jokių pastangų nustatyti kelis „WordPress“ diegimus. Tada galite naudoti atitinkamą Administratoriaus vartotojo sąsają, kad sukonfigūruotumėte kiekvieną svetainę atskirai.

Baigiamieji svarstymai

Jei diegdami WordPress naudojate kitą platinimą, paketų pavadinimai gali skirtis, bet reikia įdiegti Apache žiniatinklio serverį, MariaDB duomenų bazės serverį ir Python MySQL modulį. Jei taip yra, naudokite platinimo programinės įrangos valdymo sistemą, kad surastumėte tikslų paketo pavadinimą, kurį reikia įdiegti.

Santrauka

Šioje serijoje paaiškinome, kaip naudoti Ansible komandoms paleisti ir sudėtingoms užduotims atlikti keliuose Linux įrenginiuose vienu metu.

Vienas iš tokių pavyzdžių yra WordPress nustatymas, kaip aptarėme šiame vadove. Nesvarbu, ar esate sistemos administratorius, ar tinklaraštininkas, tikiuosi, kad šioje pamokoje pateiktos sąvokos ir pavyzdžiai jums buvo naudingi.

Sėkmės ir nedvejodami parašykite mums, jei jums reikia pagalbos arba turite kokių nors pastabų ar pasiūlymų!