Kuinka automatisoida samanaikainen WordPress-käyttöönotto useissa Linux-palvelimissa Ansiblen avulla - Osa 3


Tämän Ansible-sarjan kahdessa edellisessä artikkelissa selitimme, kuinka Ansible asennetaan ja määritetään suorittamaan komentoja ja monimutkaisia tehtäviä useissa etäpalvelimissa samanaikaisesti.

Nykyisessä opetusohjelmassa selitämme, kuinka WordPress määritetään samoissa etäpalvelimissa:

node1: 192.168.0.29
node2: 192.168.0.30

jossa asensimme, otimme käyttöön ja käynnistimme Apachen (luultavasti tiedät jo, miksi päätimme työskennellä verkkopalvelimen kanssa ensimmäisenä esimerkkinä edellisessä opetusohjelmassa).

Suosittelen sinua lukemaan Osa 1 ja Osa 2 ennen kuin jatkat eteenpäin varmistaaksesi, että olet perehtynyt Ansibleen käsitteisiin.

IT-hallinnan mahdollisen automaatiotyökalun asentaminen ja määrittäminen – Osa 1

Kuinka käyttää Anisble Playbookeja monimutkaisten tehtävien automatisoimiseen useilla etäpalvelimilla – Osa 2

Vaihe 1: Mahdollisten roolien esittely

Kun alat lisätä näytelmiin yhä useampia tehtäviä, pelikirjojasi voi tulla yhä vaikeampi käsitellä. Tästä syystä suositeltava lähestymistapa näissä tilanteissa (itse asiassa kaikissa tapauksissa) on käyttää hakemistorakennetta, joka sisältää ohjeet kullekin tehtäväryhmälle erillisissä tiedostoissa.

Tämän lähestymistavan avulla voimme käyttää näitä määritystiedostoja uudelleen erillisissä projekteissa myöhemmin. Jokainen näistä tiedostoista määrittelee roolin, jota kutsutaan Aktiivisessa ekosysteemissä.

Meidän tapauksessamme luomme kaksi roolia. Yhtä niistä (nimeltään wp-riippuvuudeksi) käytetään WordPress-riippuvuuksien (PHP ja MariaDB) asentamiseen – ei tarvitse asentaa Apache, koska se on jo asennettu).

Toinen rooli (nimeltään wp-install-config) sisältää kaikki tarvittavat WordPressin asennukseen ja määritykseen liittyvät tehtävät.

Vaihe 2: Mahdollisten roolien luominen

Ansiblen mukana tulee ansible-galaxy-niminen apuohjelma, joka auttaa meitä luomaan rooleillemme hakemistorakenteen. Teemme tämän tiedostossa /etc/ansible/playbooks (jonka loimme osassa 2), mutta teoriassa voit määrittää sen toiseen hakemistoon, jos haluat.

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

Seuraavaksi vahvistetaan uudet roolit.

ls -R /etc/ansible/playbooks

Yllä olevasta kuvasta näemme, että ansible-galaxy loi kaksi hakemistoa, joilla on sama nimi kuin roolimme, ja muita alihakemistoja (oletukset, tiedostot). , käsittelijät, meta, tehtävät, mallit ja muuttujat) ja README.md-tiedosto kunkin sisällä.

Lisäksi kaikkiin aiemmin lueteltuihin hakemistoihin tiedostoja ja malleja lukuun ottamatta luotiin YAML-tiedosto nimeltä main.yml.

Aloitamme muokkaamalla seuraavia konfiguraatiotiedostoja ohjeiden mukaisesti:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Huomaa, että lisäämme httpd, jos et ole seurannut tämän sarjan aiempia opetusohjelmia.

---
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 (toimitettu tässä Pastebinissa) seuraavasti ja tallenna se Ansible-ohjainkoneellesi (kuten näet edellisestä kopiointiohjeesta , latasin sen pääkäyttäjän kotihakemistoon (/root/wp-config-sample.php).

Tärkeää: Huomaa, että muuttujien DB_NAME, DB_USER ja DB_PASSWORD arvot > ovat samat kuin tiedostossa /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. Uusille tietokantapalvelinasennuksille, joissa pääkäyttäjän salasana on tyhjä, kuten tässä tapauksessa, meidän on valitettavasti asetettava root-käyttäjän salasana erikseen jokaisessa koneessa mysql_secure_installation -sovelluksella. .

Sikäli kuin tiedän, ei ole käytettävissä olevaa kiertotapaa, jonka avulla voit määrittää pääkäyttäjän salasanan Ansiblen kautta samassa vaiheessa, jossa luot WordPressin järjestelmänvalvojan tietokantatilin.

Varmista, että käytät samaa salasanaa kaikissa isännissä, ja kopioi sitten tunnistetiedot tiedostoon /root/.my.cnf (todellinen sijainti voi vaihdella tapauksessasi, mutta kaikissa tapauksissa sen on vastattava arvoa src-parametrista tehtävälle Kopioi ~/.my.cnf solmuihin tiedostossa /etc/ansible/playbooks/wp-dependencies/tasks/main.yml ).

Tässä tiedostossa (katso yllä) oletimme, että pääkäyttäjän salasana on YourMariaDBRootPassword.

6. Seuraavaksi ohjekirjamme (/etc/ansible/playbooks/playbook.yml) näyttää paljon järjestetymmältä ja yksinkertaisemmalta verrattuna edelliseen opetusohjelmaan:

cat playbook.yml

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

Lopuksi on aika suorittaa nämä tehtävät käyttämällä ohjekirjaamme:

ansible-playbook playbook.yml

Tarkastetaan nyt, pääsemmekö WordPressin järjestelmänvalvojasivulle käyttämällä node1 192.168.0.29 ja node2 192.168.0.30 IP-osoitteita:

Voit katsoa kaksi viimeistä vaihetta seuraavassa kuvassa:

Kuten näet, Ansiblen avulla voit määrittää useita WordPress-asennuksia vaivattomasti. Sitten voit käyttää vastaavaa Järjestelmänvalvojan-käyttöliittymää määrittääksesi kunkin sivuston erikseen.

Viimeiset huomiot

Jos käytät toista jakelua WordPressin käyttöönottoon, pakettien nimi voi vaihdella, mutta se johtuu Apache-verkkopalvelimen, MariaDB-tietokantapalvelimen ja Python MySQL -moduulin asentamisesta. Jos näin on, käytä jakelusi ohjelmistonhallintajärjestelmää etsiäksesi tarkan paketin nimen, joka sinun on asennettava.

Yhteenveto

Tässä sarjassa olemme selittäneet, kuinka Ansible-ominaisuutta käytetään komentojen suorittamiseen ja monimutkaisten tehtävien suorittamiseen useissa Linux-koneissa samanaikaisesti.

Yksi tällaisista esimerkeistä on WordPressin määrittäminen, kuten olemme käsitelleet tässä oppaassa. Oletpa sitten järjestelmänvalvoja tai bloggaaja, toivon, että tämän opetusohjelman käsitteet ja esimerkit ovat sinulle hyödyllisiä.

Onnea ja älä epäröi ottaa yhteyttä, jos tarvitset apua tai sinulla on kommentteja tai ehdotuksia!