Weboldal keresés

A WordPress egyidejű telepítésének automatizálása több Linux-kiszolgálón az Ansible használatával – 3. rész


Az Ansible sorozat előző két cikkében elmagyaráztuk, hogyan telepíthető és konfigurálható az Ansible parancsok futtatására és összetett feladatok végrehajtására több távoli kiszolgálón egyidejűleg.

Az aktuális oktatóanyagban elmagyarázzuk, hogyan kell beállítani a WordPress-et ugyanazokon a távoli szervereken:

node1: 192.168.0.29
node2: 192.168.0.30

ahol telepítettük, engedélyeztük és elindítottuk az Apache-t (valószínűleg mostanra már tudod, miért választottuk a webszerver használatát példaként az utolsó oktatóanyagban).

Erősen ajánlom, hogy olvassa el az 1. részt és a 2. részt, mielőtt továbblépne, hogy megbizonyosodjon arról, hogy ismeri az Ansible-hez kapcsolódó fogalmakat.

Az „elfogadható” automatizálási eszköz telepítése és konfigurálása informatikai menedzsmenthez – 1. rész

Az Anisble Playbooks használata összetett feladatok automatizálására több távoli szerveren – 2. rész

1. lépés: A lehetséges szerepek bemutatása

Ahogy egyre több feladatot kezd hozzáadni a színdarabokhoz, a Playbookok kezelése egyre nehezebbé válhat. Emiatt az ajánlott megközelítés ezekben a helyzetekben (valójában minden esetben) egy olyan könyvtárstruktúra használata, amely az egyes feladatcsoportokhoz tartozó direktívákat külön fájlokban tartalmazza.

Ez a megközelítés lehetővé teszi számunkra, hogy ezeket a konfigurációs fájlokat különálló projektekben újra felhasználjuk. Ezen fájlok mindegyike meghatározza az Ansible ökoszisztémában szerepkört.

A mi esetünkben két szerepet fogunk létrehozni. Az egyik (az úgynevezett wp-függőségek) a WordPress függőségek (PHP és MariaDB) telepítésére szolgál – nincs szükség a telepítésére. Apachet, mivel az már telepítve van).

A másik szerepkör (amelynek neve wp-install-config) a WordPress telepítéséhez és konfigurálásához kapcsolódó összes szükséges feladatot tartalmazza.

2. lépés: Lehetséges szerepek létrehozása

Az Ansible egy ansible-galaxy nevű segédprogrammal érkezik, amely segít létrehozni a szerepeinkhez tartozó könyvtárstruktúrát. Ezt a /etc/ansible/playbooks-ban fogjuk megtenni (amelyet a 2. részben hoztunk létre), de elméletileg beállíthatja egy másik könyvtárban is, ha akarja.

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

Következő megerősíti az újonnan létrehozott szerepeket.

ls -R /etc/ansible/playbooks

A fenti képen láthatjuk, hogy az ansible-galaxy létrehozott két, a szerepeinkkel azonos nevű könyvtárat, valamint más alkönyvtárakat (alapértelmezett, fájlok). , kezelők, meta, tasks, sablonok és vars) és egy README.md fájlt mindegyiken belül.

Ezenkívül egy main.yml nevű YAML-fájl a fájlok és sablonok kivételével az összes korábban felsorolt könyvtárban létrejött.

A következő konfigurációs fájlok szerkesztésével kezdjük a jelzett módon:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Ne feledje, hogy a httpd kódot mellékeljük arra az esetre, ha nem követte a sorozat korábbi oktatóanyagait.

---
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 (ebben a Pastebinben található) az alábbiak szerint, és mentse el az Ansible vezérlőgépére (amint az a fenti utolsó másolási irányelvben látható , letöltöttem a szuperfelhasználó kezdőkönyvtárába (/root/wp-config-sample.php).

Fontos: Felhívjuk figyelmét, hogy a DB_NAME, DB_USER és DB_PASSWORD változók értéke > ugyanazok, mint a /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. Olyan új adatbázis-kiszolgáló telepítéseknél, ahol a root jelszó üres, mint például ebben az esetben, sajnos minden gépen külön kell beállítanunk a root felhasználó jelszavát a mysql_secure_installation segítségével. .

Amennyire én tudom, nincs olyan megoldás, amely lehetővé tenné a root jelszó beállítását az Ansible segítségével ugyanabban a lépésben, amikor létrehozza a WordPress adminisztratív adatbázis-fiókját.

Győződjön meg arról, hogy ugyanazt a jelszót használja minden gazdagépen, majd másolja a hitelesítő adatokat a /root/.my.cnf fájlba (a tényleges hely eltérhet az Ön esetében, de minden esetben meg kell egyeznie az értékkel az src paraméterből a Másolás ~/.my.cnf feladathoz az /etc/ansible/playbooks/wp-dependencies/tasks/main.yml csomópontjaiba ).

Ebben a fájlban (lásd fent) azt feltételeztük, hogy a root jelszó YourMariaDBRootPassword.

6. Ezután a játékfüzetünk (/etc/ansible/playbooks/playbook.yml) sokkal szervezettebbnek és egyszerűbbnek tűnik az előző oktatóanyaghoz képest:

cat playbook.yml

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

Végül itt az ideje végrehajtani ezeket a feladatokat a játékkönyvünk segítségével:

ansible-playbook playbook.yml

Most nézzük meg, hogy elérhetjük-e a WordPress Admin oldalt a node1 192.168.0.29 és a node2 192.168.0.30 IP-címeivel:

Az utolsó két lépést megtekintheti a következő képernyőn:

Amint látja, az Ansible használatával több WordPress-telepítést is beállíthat kis erőfeszítés nélkül. Ezután használhatja a megfelelő Rendszergazda felhasználói felületet az egyes webhelyek külön konfigurálásához.

Végső megfontolások

Ha egy másik disztribúciót használ a WordPress telepítéséhez, a csomagok neve változhat, de ez az Apache webszerver, a MariaDB adatbázis-kiszolgáló és a Python MySQL modul telepítésétől függ. Ha ez a helyzet, használja a disztribúció szoftverkezelő rendszerét a telepíteni kívánt csomag pontos nevének megkereséséhez.

Összegzés

Ebben a sorozatban elmagyaráztuk, hogyan használható az Ansible parancsok futtatására és összetett feladatok végrehajtására több Linux-gépen egyidejűleg.

Az egyik ilyen példa a WordPress beállítása, amint azt ebben az útmutatóban tárgyaltuk. Akár rendszergazda, akár blogger vagy, remélem hasznosnak találtad az oktatóanyagban található fogalmakat és példákat.

Sok szerencsét kívánunk, és ha segítségre van szüksége, vagy bármilyen észrevétele vagy javaslata van, ne habozzon felvenni velünk a kapcsolatot!