Automatizácia serverov je bezpečný a spoľahlivý proces správy a monitorovania serverov efektívnym a technologicky vyspelým spôsobom. Na rozdiel od tradičného štýlu správy serverov v dátových centrách riadených špecializovaným tímom odborníkov sú všetky servery spravované pomocou automatizácie. V dôsledku toho sa minimalizujú ľudské chyby.
Nástroje na správu konfigurácie ako Ansible, Puppet, Terraform, aby sme spomenuli aspoň niektoré, sa zvyčajne používajú na automatizáciu serverov. Tieto nástroje nastavujú servery pomocou automatizácie vytvorením štandardných postupov pre nové servery, pričom eliminujú potenciálne chyby, ktoré vznikajú pri manuálnom vykonávaní.
Ansible je robustný open-source projekt. Je flexibilný, ľahko sa používa a má maximálne zjednodušenú architektúru. Na používanie playbookov Ansible nie sú potrebné žiadne skúsenosti s kódovaním a nevyžaduje sa inštalácia softvéru na uzly. Predovšetkým je nabitý vynikajúcimi funkciami, ktoré umožňujú písať skripty a zefektívňovať automatizáciu.
V tejto príručke vás prevedieme krokmi inštalácie a konfigurácie LAMP na Ubuntu 20.04 pomocou Ansible.
Požiadavky
Na sledovanie tohto návodu budete potrebovať:
- nainštalované Ubuntu vo vašom systéme.
- Jeden alebo viac hostiteľov Ansible: Na začiatku je potrebné nastaviť jedného alebo viacerých vzdialených hostiteľov Ansible s najnovšou verziou Ubuntu. Postupujte podľa návodu Automatizácia nastavenia servera pomocou Ansible a Ubuntu 20.04 pre nastavenie.
- Jeden riadiaci uzol Ansible: Stroj s Ubuntu s nainštalovaným, nakonfigurovaným a pripojeným systémom Ansible k vašim hostiteľom Ansible pomocou kľúčov SSH:
-
- Riadiaci uzol musí mať používateľa s oprávneniami sudo a firewall v stave ZAPNUTÝ.
- Ak potrebujete pomoc s nastavením Ansible, pozrite si návod na inštaláciu a konfiguráciu Ansible na Ubuntu 20.04.
Aký je účel Ansible Playbooku?
Tento Ansible playbook je alternatívny spôsob, ako prejsť postupom opísaným v našej príručke Nastavenie LAMP Stacku – Linux Apache MySQL PHP.
Spustenie Ansible playbooku vykoná na vašich hostiteľoch Ansible nasledujúce akcie:
-
Nainštaluje aptitude, alternatívu k správcovi balíkov apt, ktorý preferuje Ansible.
-
Nainštaluje všetky potrebné balíky LAMP.
-
Vytvorí nový Apache VirtualHost a nakonfiguruje vyhradený koreňový adresár dokumentov.
-
Nastaví na ZAPNUTÝ nový VirtualHost.
-
Nastaví na VYPNUTÝ predvolenú webovú stránku Apache, t. j. nastaví premennú disable_default na true.
-
Zvolí heslo pre MySQL root používateľa.
-
Odstráni anonymné účty MySQL a testovaciu databázu.
-
Nastaví UFW na povolenie HTTP prevádzky na nakonfigurovanom porte, kde predvolený je 80.
-
Nastaví testovací PHP skript.
Po dokončení spustenia Ansible playbooku uvidíte webové PHP prostredie bežiace na Apache podľa konfigurácií, ktoré sme nastavili.
Použitie Ansible Playbooku
Najprv získajte LAMP playbook a jeho závislosti z repozitára do-community/ansible-playbooks. Potom naklonujte repozitár s LAMP playbookom do lokálneho priečinka v riadiacom uzle Ansible.
Spustite príkaz git pull, aby ste sa uistili, že máte prístup k správnemu obsahu, ktorý budeme v tomto návode používať:
|
1 2 |
cd ~/ansible-playbooks git pull |
Ak používate repozitár do-community/ansible-playbooks po prvýkrát, zvážte naklonovanie repozitára do vášho domovského priečinka:
|
1 2 3 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Prejdite do priečinka lamp_ubuntu2004 a uvidíte štruktúru:
|
1 2 3 4 5 6 7 8 |
lamp_ubuntu2004 ├── files │ ├── apache.conf.j2 │ └── info.php.j2 ├── vars │ └── default.yml ├── playbook.yml └── readme.md |
Tu je prehľad toho, čo tieto súbory znamenajú:
-
files/info.php.j2: Toto je súbor šablóny, v ktorom môžete nastaviť testovaciu stránku PHP v koreňovom adresári webového servera.
-
files/apache.conf.j2: Ďalší súbor šablóny používaný na nastavenie Apache VirtualHost.
-
vars/default.yml: Je to súbor premenných na prispôsobenie nastavení playbooku.
-
playbook.yml: Tento súbor obsahuje celý obsah úloh, ktoré sa majú vykonať na vzdialenom serveri/serveroch.
-
readme.md: Súbor na čítanie obsahujúci informácie o tomto playbooku.
Prispôsobme konfigurácie MySQL a Apache vykonaním zmien v súbore premenných playbooku. Prejdite do adresára lamp_ubuntu2004 a otvorte súbor vars/default.yml pomocou editora nano:
|
1 2 |
cd lamp_ubuntu2004 nano vars/default.yml |
Po otvorení súboru vars/default.yml sa zobrazí zoznam premenných, ktoré je potrebné upraviť:
|
1 2 3 4 5 6 7 |
--- mysql_root_password: "mysql_root_password" app_user: "justin" http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" disable_default: true |
Poďme si podrobne vysvetliť jednotlivé premenné:
-
mysql_root_password: Ukladá heslo pre root MySQL účet.
-
app_user: Je to vzdialený používateľ bez oprávnení root na hostiteľovi Ansible, ktorý vystupuje ako vlastník súborov aplikácie.
-
http_host: Zobrazuje váš názov domény.
-
http_conf: Zobrazuje názov konfiguračného súboru vytvoreného v rámci Apache.
-
http_port: Je to HTTP port pre tento virtuálny hostiteľ a 80 je predvolený.
-
disable_default: Používa sa na zrušenie predvolených možností, ktoré prichádzajú s Apache.
Potom uložte a zatvorte súbor vars/default.yml.
Po dokončení celého nastavenia sme pripravení spustiť tento playbook na serveroch. V predvolenom nastavení je väčšina serverov v playbookoch nakonfigurovaná na spustenie na každom serveri v inventároch. Použime príznak -l, aby sme ovplyvnili iba jeden server alebo vybranú podskupinu skupín, ktorých sa playbook týka. Prípadne môžeme použiť príznak -u, aby sme získali podrobný prehľad o tom, ktorý vzdialený server sa pripája a vykonáva príkazy na vzdialených hostiteľoch.
Spusťme playbook na jednom serveri server1 a pripojme ho s jedným používateľom ako justin:
|
1 |
ansible-playbook playbook.yml -l server1 -u justin |
Získate výstup podobný tomuto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PLAY [all] ********************************************************************************************************* TASK [Gathering Facts] *********************************************************************************************************ok: [server1] TASK [Install prerequisites] *********************************************************************************************************ok: [server1] => (item=aptitude) ... TASK [UFW - Allow HTTP on port 80] ********************************************************************************************************* changed: [server1] TASK [Sets Up PHP Info Page] ********************************************************************************************************* changed: [server1] RUNNING HANDLER [Reload Apache] ********************************************************************************************************* changed: [server1] RUNNING HANDLER [Restart Apache] ********************************************************************************************************* changed: [server1] PLAY RECAP ********************************************************************************************************* server1 : ok=15 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
Keď uvidíte, že beh playbooku sa dokončil, prejdite do svojho webového prehliadača a otvorte hostiteľa servera. Nezabudnite na koniec IP adresy pridať /info.php:
|
1 |
http://server_host_or_IP/info.php |
Po kliknutí na túto URL adresu uvidíte stránku ako táto:
|
Varovanie: Zobrazená stránka obsahuje citlivé informácie o vašom prostredí PHP. Preto sa odporúča odstrániť vaše osobné informácie zo servera pomocou nasledujúceho príkazu: rm -f /var/www/info.php |
Čo sa nachádza v Playbooku?
Ďalej si vysvetlime význam a dôležitosť súborov použitých v ansible-playbook obsahu:
-
vars/default.yml
Súbor s premennými default.yml obsahuje názov domény a heslo k účtu MySQL root účtu. Ide o predvolené hodnoty použité v ansible-playbook úlohách:
|
1 2 3 4 5 6 7 |
--- mysql_root_password: "mysql_root_password" app_user: "justin" http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" disable_default: true |
- files/apache.conf.j2
Súbor apache.conf.j2 je šablóna Jinja 2 používaná na konfiguráciu nového Apache VirtualHost. Premenné použité v tejto šablóne musia byť definované v súbore s premennými vars/default.yml:
|
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/info.php.j2
Podobne ako files/apache.conf.j2, súbor info.php.j2 je tiež šablóna Jinja. Tento súbor používame na nastavenie testovacieho PHP skriptu v koreňovom adresári dokumentov (document root) novo nakonfigurovaného LAMP servera:
|
1 2 |
<?php phpinfo(); |
-
playbook.yml
Súbor playbook.yml je miesto, kde sú definované všetky úlohy z tohto nastavenia. V tomto súbore je nakonfigurovaný celý LAMP stack. Začína to definovaním skupiny cieľových serverov, ktorá je nastavená na all. Taktiež preberá hodnotu become ako true ( become: true), a definuje všetky úlohy, ktoré je potrebné vykonať. Ďalej tento yaml súbor obsahuje predvolený súbor, ktorým je súbor s premennými vars/default.yml, 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 |
--- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Nainštalovať prerekvizity apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes loop: [ 'aptitude' ] #Konfigurácia Apache - name: Nainštalovať LAMP balíky apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] - name: Vytvoriť dokumentový koreňový adresár file: path: "/var/www/{{ http_host }}" state: directory owner: "{{ app_user }}" mode: '0755' - name: Nastaviť up Apache virtuálneho hostiteľa template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Znovu načítať Apache - name: Povoliť nový web shell: /usr/sbin/a2ensite {{ http_conf }} notify: Znovu načítať Apache - name: Zakázať predvolený Apache web shell: /usr/sbin/a2dissite 000-default.conf when: disable_default notify: Znovu načítať 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 - 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 }}" - name: Odstrániť the MySQL testovaciu databázu mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" # Konfigurácia UFW - name: "UFW - Povoliť HTTP na porte {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp # PHP Info stránka - name: Nastaviť Up PHP Info stránku template: src: "files/info.php.j2" dest: "/var/www/{{ http_host }}/info.php" 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ť na základe potrieb a požiadaviek vášho projektu.
Záver
V tomto návode sme prešli krokmi inštalácie a konfigurácie LAMP na vzdialenom serveri pomocou Ansible. Existuje množstvo ďalších možností prispôsobenia, s ktorými môžete experimentovať. Napríklad použitie oficiálnej dokumentácie Ansible a použitie prípadov mysql_user z modulu Ansible je skvelý spôsob, ako sa posunúť na vyššiu úroveň. Taktiež postupujte podľa krokov popísaných v tejto príručke a precvičte si automatizáciu pomocou iných nástrojov na správu konfigurácie a operačných systémov, aby ste zvýšili úroveň náročnosti.
Ste v LAMP stacku nováčikom a chcete sa do tejto témy ponoriť hlbšie? Preskúmajte nasledujúce návody na našom blogu:
- Ako nainštalovať WordPress s LAMP na Ubuntu 20.04
- Ako nainštalovať Linux, Apache, MySQL, PHP (LAMP) Stack na Centos-7
- Ako nainštalovať LEMP Stack Linux Nginx MySQL PHP na Ubuntu 20.04
Príjemnú prácu s počítačom!

Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.