Úvod
Vždy nastanú chvíle, keď potrebujeme nakonfigurovať nové servery. Môže to byť z dôvodu distribúcie pracovného zaťaženia alebo ak jednoducho potrebujeme viac serverov. Pri nastavovaní nových serverov musia používatelia na ich konfiguráciu využiť automatizáciu serverov. Robí sa to s cieľom minimalizovať manuálne zásahy. Ansible je jedným z nástrojov na správu konfigurácie, ktorý možno použiť na automatickú konfiguráciu nového servera, čím sa znižuje pravdepodobnosť ľudskej chyby pri manuálnom nastavovaní servera.
Ansible je nástroj bohatý na funkcie, pričom má jednoduchú architektúru. Uľahčuje konfiguráciu serverov prostredníctvom skriptov. Vďaka svojej stručnej architektúre Ansible nevyžaduje inštaláciu žiadneho iného softvéru v uzloch.
V tomto návode vám ukážeme, ako použiť Ansible na automatizáciu inštalácie WordPressu s balíkom LAMP bežiacim na serveri Ubuntu. WordPress je CMS, ktorý sa používa na vytváranie blogov a webových stránok s využitím PHP ako kódovacieho jazyka a databázy MySQL na ukladanie údajov. Po nainštalovaní WordPressu môžu používatelia spravovať web pomocou webového rozhrania.
Požiadavky
- Keďže tento návod je založený na Ubuntu, budete musieť mať nainštalovanú najnovšiu verziu Ubuntu s oprávneniami sudo. Ak nemáte nainštalované Ubuntu, môžete postupovať podľa nášho Ako nastaviť váš server Ubuntu.
- Budeme tiež potrebovať riadiaci uzol Ansible. Musí to byť riadiaci uzol s oprávneniami sudo a povoleným firewallom. Inštalácia a konfigurácia Ansible na Ubuntu 20.04 obsahuje podrobný návod, ako nakonfigurovať Ansible.
- Potrebujeme tiež vzdialených hostiteľov Ansible bežiacich na najnovšom Ubuntu. Hostitelia sú v podstate spravované uzly v Ansible.
Prehľad akcií Ansible Playbooku
V tejto časti uvidíme, čo robí náš Ansible Playbook, keď ho spustíme. Tento postup je alternatívou k manuálnemu nastaveniu, ktoré je uvedené tu: Ako nainštalovať WordPress s LAMP na Ubuntu 20.04.
Keď spustíme Playbook, Ansible:
- Nainštaluje aptitude čo je preferovaný správca balíkov pre Ansible.
- Nainštaluje a nakonfiguruje rozšírenia PHP a balíky LAMP.
- Vytvorí nový Apache VirtualHost pre webovú stránku WordPress.
- Povolí mod_rewrite modul a zakáže predvolenú webovú stránku ponúkanú serverom Apache.
- Nastaví heslo pre používateľa root v MySQL.
- Odstráni anonymné účty MySQL a testovaciu databázu.
- Vytvorí nového používateľa a novú databázu. Tie budú použité webovou stránkou WordPress.
- Nastaví UFW na povolenie prevádzky HTTP na nakonfigurovanom porte ( 80 predvolene).
- Stiahne a rozbalí WordPress.
- Nastaví oprávnenia a vlastníctvo adresárov.
- Nakonfiguruje nový súbor wp-config.php pomocou jeho šablóny.
Návod na Ansible Playbook pre WordPress na LAMP
Najprv budeme musieť získať playbook WordPress na LAMP a jeho závislosti z repozitára do-community/ansible-playbooks . Tento repozitár naklonujeme do riadiaceho uzla Ansible.
Môžete spustiť príkaz git pull ako je uvedené nižšie:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Uistite sa, že máte aktualizovanú verziu vyššie uvedeného repozitára. To platí v prípade, ak ste repozitár už predtým klonovali. Nižšie je uvedené, ako môžete získať aktualizáciu:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Teraz musíme nájsť súbory v priečinku wordpress-lamp_ubuntu priečinku. Názov tohto priečinka sa môže líšiť v závislosti od verzie Ubuntu, ktorú používate. Na prvý pohľad uvidíte v tomto adresári nasledujúcu štruktúru:

Nižšie si zhrňme účel týchto súborov:
- files/apache.conf.j2: Apache používa VirtualHost. Tento súbor sa používa na špecifikovanie nastavení pre VirtualHost.
- files/wp-config.php.j2: Tento súbor obsahuje nastavenia na konfiguráciu WordPressu.
- vars/default.yml: Konfiguruje nastavenia playbooku.
- playbook.yml: Ak existujú úlohy, ktoré je potrebné vykonať na vzdialenom serveri, tento súbor sa používa na ich konfiguráciu.
- readme.md: Návod na používanie playbooku.
Musíme upraviť súbor s premennými playbooku, aby sme prispôsobili inštaláciu. Najprv otvorte vars/default.yaml súbor, ktorý sa nachádza vo vyššie uvedenom adresári:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Tento súbor je pomerne dlhý. Obsahuje množstvo konfigurácií, ktoré nám pomôžu s inštaláciou:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Systémové nastavenia php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL nastavenia mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP nastavenia http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Tu sa zaoberáme nasledujúcimi premennými:
- php_modules: Pole obsahujúce PHP rozšírenia, ktoré by mali byť nainštalované na podporu vašej inštalácie WordPressu. Ak chcete nainštalovať viac modulov, môžete to špecifikovať tu.
- mysql_root_password: Heslo pre root MySQL účet.
- mysql_db: Toto špecifikuje názov MySQL databázy, ktorú bude WordPress používať.
- mysql_user: Meno MySQL používateľa, ktorý by mal byť vytvorený pre WordPress.
- mysql_password: Heslo pre nového MySQL používateľa.
- http_host: Doménové meno alebo IP adresa servera.
- http_conf: Názov konfiguračného súboru, ktorý bude vytvorený v rámci Apache.
- http_port: HTTP port pre tento virtuálny hostiteľ. Tento port sa používa na prístup k webovej stránke. Predvolená hodnota je 80.
Potom zadajte hodnoty do vyššie uvedeného súboru, uložte ho a zatvorte. Pre používateľov, ktorí používajú editor nano, stlačte CTRL+X, Y, a stlačte ENTER.
Teraz ste pripravení spustiť tento playbook. Tento playbook môžete spustiť na jednom alebo viacerých serveroch. Ak chcete spustiť tento playbook na konkrétnom serveri, môžete použiť -l príznak. Ďalej, ak potrebujete špecifikovať používateľa na pripojenie k vzdialenému serveru, špecifikujte ho pomocou -u príznaku.
Predpokladajme, že chceme spustiť náš playbook na jednom serveri, srvr1 pomocou používateľa u1, môžeme spustiť nižšie uvedený príkaz:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
Po spustení vyššie uvedeného príkazu získate výstup podobný tomuto:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [server1] TASK [Install prerequisites] ******************************************************************************** ok: [server1] |
Počkajte, kým sa dokončí vykonávanie playbooku. Potom prejdite na server_name vo vašom webovom prehliadači:
|
1 |
http://server_host_or_ip/ |
Uvidíte obrazovku:

Potom vyberte jazyk podľa vášho výberu a stlačte Pokračovať. Zobrazí sa ďalšia obrazovka s výzvou na zadanie niektorých podrobností na dokončenie inštalácie:

Potom zadajte informácie a stlačte Inštalovať WordPress. Bude to chvíľu trvať a potom uvidíte obrazovku ako nižšie:

Vyberte Prihlásiť sa pre prihlásenie na vašu webovú stránku a konfiguráciu nastavení:

Obsah Ansible Playbooku
Pamätajte na priečinok wordpress-lamp_ubuntu . Obsahuje niekoľko súborov. Poďme si ich teda prejsť jeden po druhom:
● vars/default.yml
Tento súbor obsahuje hodnoty, ktoré sa používajú na konfiguráciu nastavení pre vašu webovú stránku WordPress:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Nastavenia systému php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #Nastavenia MySQL mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "heslo" #Nastavenia HTTP http_host: "vaša_doména" http_conf: "vaša_doména.conf" http_port: "80" |
● files/apache.conf.j2
Tento súbor sa používa na konfiguráciu Apache VirtualHost:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<VirtualHost *:{{ http_port }}> ServerAdmin webmaster@localhost ServerName {{ http_host }} ServerAlias www.{{ http_host }} DocumentRoot /var/www/{{ http_host }} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/{{ http_host }}> Options -Indexes </Directory> <IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> </VirtualHost> |
● files/wp-config.php.j2
Tento súbor sa používa na konfiguráciu WordPressu. Obsahuje jedinečné kľúče a soli generované hašovacími funkciami:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
<?php /** * Základná konfigurácia pre WordPress * * Skript na vytvorenie wp-config.php používa tento súbor počas * inštalácie. Nemusíte používať webovú stránku, môžete * skopírovať tento súbor do "wp-config.php" a vyplniť hodnoty. * * Tento súbor obsahuje nasledujúce konfigurácie: * * * Nastavenia MySQL * * Tajné kľúče * * Prefix tabuliek databázy * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** Nastavenia MySQL - Tieto informácie môžete získať od svojho poskytovateľa webhostingu ** // /** Názov databázy pre WordPress */ define( 'DB_NAME', '{{ mysql_db }}' ); /** Používateľské meno databázy MySQL */ define( 'DB_USER', '{{ mysql_user }}' ); /** Heslo k databáze MySQL */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** Hostiteľský server MySQL */ define( 'DB_HOST', 'localhost' ); /** Znaková sada databázy, ktorá sa použije pri vytváraní databázových tabuliek. */ define( 'DB_CHARSET', 'utf8' ); /** Porovnávanie databázy (Collate). V prípade pochybností to nemeňte. */ define( 'DB_COLLATE', '' ); /** Prístup k súborovému systému **/ define('FS_METHOD', 'direct'); /**#@+ * Unikátne kľúče a soli pre autentifikáciu. * * Zmeňte ich na iné unikátne frázy! * Môžete ich vygenerovať pomocou {@link https://api.wordpress.org/secret-key/1.1/salt/ služby tajných kľúčov na WordPress.org} * Tieto kľúče môžete kedykoľvek zmeniť, čím zneplatníte všetky existujúce cookies. To prinúti všetkých používateľov znova sa prihlásiť. * * @since 2.6.0 */ define( 'AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); /**#@-*/ /** * Predpona tabuliek databázy WordPress. * * V jednej databáze môžete mať viacero inštalácií, ak každej priradíte * unikátnu predponu. Používajte iba čísla, písmená a podčiarkovníky! */ $table_prefix = 'wp_'; /** * Pre vývojárov: Režim ladenia WordPress. * * Zmeňte túto hodnotu na true, ak chcete povoliť zobrazovanie upozornení počas vývoja. * Dôrazne sa odporúča, aby vývojári pluginov a tém používali WP_DEBUG * vo svojich vývojových prostrediach. * * Informácie o ďalších konštantách, ktoré možno použiť na ladenie, * nájdete v príručke Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* To je všetko, prestaňte s úpravami! Príjemné publikovanie. */ /** Absolútna cesta k adresáru WordPress. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Nastavuje premenné WordPress a načítava súbory. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Tento súbor obsahuje všetky úlohy definované v tomto nastavení. Začína zoznamom serverov, na ktoré je toto nastavenie zamerané. Obsahuje vars/default.yml súbor s premennými na načítanie možností konfigurácie:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
--- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Install prerequisites apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Install LAMP balíky apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Install PHP rozšírenia apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Konfigurácia Apache - name: Vytvoriť koreňový adresár file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Nastaviť up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Znovu načítať Apache tags: [ apache ] - name: Povoliť rewrite modul shell: /usr/sbin/a2enmod rewrite notify: Znovu načítať Apache tags: [ apache ] - name: Povoliť nový web shell: /usr/sbin/a2ensite {{ http_conf }} notify: Znovu načítať Apache tags: [ apache ] - name: Zakázať predvolený Apache web shell: /usr/sbin/a2dissite 000-default.conf notify: Reštartovať Apache tags: [ apache ] # Konfigurácia MySQL - name: Nastaviť the root heslo mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Odstrániť všetky anonymné používateľské účty mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Odstrániť the MySQL testovaciu databázu mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Vytvorí databázu pre WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Vytvoriť MySQL používateľa pre WordPress mysql_user: name: "{{ mysql_user }}" password: "{{ mysql_password }}" priv: "{{ mysql_db }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] # Konfigurácia UFW - name: "UFW - Povoliť HTTP na porte {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # Konfigurácia WordPress - name: Stiahnuť a rozbaliť najnovší WordPress unarchive: src: https://wordpress.org/latest.tar.gz dest: "/var/www/{{ http_host }}" remote_src: yes creates: "/var/www/{{ http_host }}/wordpress" tags: [ wordpress ] - name: Nastaviť vlastníctvo file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Nastaviť oprávnenia pre adresáre shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Nastaviť oprávnenia pre súbory shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: Nastaviť up wp -konfiguráciu template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Znovu načítať Apache service: name: apache2 state: reloaded - name: Reštartovať Apache service: name: apache2 state: restarted |
Tieto súbory môžete upraviť podľa potreby, aby vyhovovali vašim konkrétnym požiadavkám na webovú stránku, ktorú vytvárate.
Záver
V tomto návode sme si ukázali, ako môžete pomocou nástroja Ansible zautomatizovať inštaláciu a nastavenie webovej stránky WordPress bežiacej na LAMP stacku na najnovšom operačnom systéme Ubuntu.
Ďalšie návody na prácu s nástrojom Ansible nájdete v nasledujúcich článkoch na našom blogu:
- Používanie Ansible s CloudSigma
- Automatizácia nastavenia servera pomocou Ansible a Ubuntu 20.04
- Inštalácia a konfigurácia LAMP na Ubuntu 20.04 pomocou Ansible
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.