Kuinka automatisoida samanaikaisia WordPress-käyttöönottoja useissa Linux-palvelimissa käyttämällä Ansible - Osa 3


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

Tässä opetusohjelmassa selitämme, kuinka WordPress asennetaan samoille etäpalvelimille:

node1: 192.168.0.29
node2: 192.168.0.30

mihin asennimme, otimme käyttöön ja käynnistimme Apachen (tiedät todennäköisesti jo nyt, miksi päätimme työskennellä verkkopalvelimen kanssa ensimmäisenä esimerkkinä viimeisessä opetusohjelmassa).

Kehotan teitä lukemaan osat 1 ja 2 ennen kuin jatkat, varmistaaksesi, että olet perehtynyt Ansibleyn liittyviin käsitteisiin.

Vaihe 1: Esittelemme mahdollisia rooleja

Kun lisäät yhä enemmän tehtäviä näytelmiin, Playbooksisi voi tulla yhä vaikeampaa käsitellä. Tästä syystä suositeltava lähestymistapa näissä tilanteissa (oikeastaan kaikissa tapauksissa) on käyttää hakemistorakennetta, joka sisältää ohjeet jokaiselle tehtäväryhmälle erillisissä tiedostoissa.

Tämän lähestymistavan avulla voimme käyttää näitä kokoonpanotiedostoja uudestaan erillisissä hankkeissa matkan varrella. Kukin näistä tiedostoista määrittelee mitä Ansible-ekosysteemissä kutsutaan rooliksi.

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

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

Vaihe 2: Luodaan mahdollisia rooleja

Ansible sisältää apuohjelman nimeltä ansible-galaxy, joka auttaa meitä luomaan hakemistorakenteen rooleillemme. Teemme tämän hakemistossa/etc/ansible/playbooks (jonka loimme osassa 2), mutta teoriassa voit asettaa sen toiseen hakemistoon, jos haluat.

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

Seuraava vahvistaa uudet luodut roolit.

# ls -R /etc/ansible/playbooks

Yllä olevasta kuvasta voimme nähdä, että ansible-galaxy loi kaksi hakemistoa samalla nimellä kuin roolimme, ja muut alihakemistot (oletusarvot, tiedostot, käsittelijät, meta, tehtävät, mallit ja vars) sekä README.md-tiedoston jokaisen niitä.

Lisäksi YAML-tiedosto main.yml luotiin kaikkiin aiemmin lueteltuihin hakemistoihin, paitsi tiedostoja ja malleja.

Aloitamme muokkaamalla seuraavia määritystiedostoja ilmoitetulla tavalla:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml. Huomaa, että sisällytämme httpd: n, jos et ole seurannut tämän sarjan edellisten oppaiden ohella.

---
# 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 (toimitetaan tässä Pastebin-tiedostossa) seuraavasti ja tallenna se Ansible-ohjainkoneellesi (kuten yllä olevasta viimeisestä kopiodirektiivistä näet, ladasin sen pääkäyttäjän kotihakemistoon (/ root /wp-config-sample.php).

Tärkeää: Huomaa, että muuttujien DB_NAME, DB_USER ja DB_PASSWORD arvo on sama kuin /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 juurisalasana on tyhjä, kuten tässä tapauksessa, valitettavasti joudumme määrittämään käyttäjän juuren salasanan erikseen jokaisessa koneessa mysql_secure_installation-ohjelman avulla.

Sikäli kuin tiedän, ei ole käytettävissä olevaa kiertotapaa, jonka avulla voit asettaa juurisalasanan Ansible-palvelun kautta samassa vaiheessa, kun luot hallinnollisen tietokannan tilin WordPressille.

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

Kyseisessä tiedostossa (katso yllä) oletamme, että pääkäyttäjän salasana on YourMariaDBRootPassword.

6. Seuraavaksi soittokirjamme (/etc/ansible/playbooks/playbook.yml) näyttää paljon järjestäytyneemmältä ja yksinkertaisemmalta kuin edellinen opetusohjelma:

# cat playbook.yml
- hosts: webservers
  roles:
        - wp-dependencies
        - wp-install-config

Lopuksi on aika suorittaa nämä tehtävät vetämällä pelikirjaamme:

# ansible-playbook playbook.yml

Tarkistetaan nyt, pääsimmekö WordPress-järjestelmänvalvojan sivulle solmun1 192.168.0.29 ja solmun2 192.168.0.30 IP-osoitteilla:

Voit tarkastella kahta viimeistä vaihetta seuraavassa kuvaruudussa:

Kuten näette, voit määrittää Ansible-sovelluksen avulla useita WordPress-asennuksia vain vähän tai vaivattomasti. Tämän jälkeen voit määrittää kunkin sivuston erikseen vastaavan järjestelmänvalvojan käyttöliittymän avulla.

Loppuhuomioita

Jos käytät toista jakelua WordPressin käyttöönottoon, pakettien nimi voi vaihdella, mutta se riippuu Apache-verkkopalvelimen, MariaDB-tietokantapalvelimen ja Python MySQL -moduulin asentamisesta. Jos näin on, etsi jakelun ohjelmistohallintajärjestelmästä tarkka asennettavan paketin nimi.

Yhteenveto

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

Yksi tällaisista esimerkeistä on WordPressin asentaminen, kuten olemme käsittäneet tässä oppaassa. Olitpa järjestelmänvalvoja tai bloggaaja, toivon, että tämän opetusohjelman käsitteet ja esimerkit ovat hyödyllisiä.

Onnea ja älä epäröi pudottaa meille linjaa, jos tarvitset apua tai jos sinulla on kommentteja tai ehdotuksia!