A szerverautomatizálás a szerverek hatékony és technológiailag fejlett módon történő kezelésének és felügyeletének biztonságos és megbízható folyamata. A dedikált szakértői csapat által felügyelt adatközpontokban történő hagyományos szerverkezeléssel ellentétben minden szerver kezelése automatizálással történik. Ennek eredményeként az emberi hibák száma minimálisra csökken.
Az olyan konfigurációkezelő eszközök, mint a Ansible, Puppet, Terraform, hogy csak néhányat említsünk, jellemzően a szerverek automatizálására szolgálnak. Ezek az eszközök automatizálással állítják be a szervereket, standard eljárásokat kialakítva az új szerverek számára, miközben kiküszöbölik a kézi végrehajtás során fellépő esetleges hibákat.
Ansible egy robusztus, nyílt forráskódú projekt. Rugalmas, könnyen használható, és rendkívül egyszerűsített architektúrával rendelkezik. Az Ansible playbookok használatához nincs szükség programozói háttérre, és nem igényli szoftverek telepítését a csomópontokra. Mindenekelőtt kiváló képességekkel rendelkezik, amelyek lehetővé teszik szkriptek írását és az automatizálás egyszerűsítését.
Ebben az útmutatóban lépésről lépésre bemutatjuk a LAMP telepítését és konfigurálását Ubuntu 20.04-en az Ansible segítségével.
Előfeltételek
Az útmutató követéséhez a következőkre lesz szüksége:
- Telepített Ubuntu a rendszerén.
- Egy vagy több Ansible gazdagép (Host): Kezdetben be kell állítani egy vagy több távoli Ansible gazdagépet, amelyeken a legújabb Ubuntu fut. Kövesse a Szerverbeállítás automatizálása Ansible és Ubuntu 20.04 használatával című útmutatót a beállításhoz.
- Egy Ansible vezérlőcsomópont (control node): Egy Ubuntu gép, amelyre telepítve és konfigurálva van az Ansible, és amely csatlakozik az Ön Ansible gazdagépeihez SSH-kulcsok:
-
- segítségével. A vezérlőcsomópontnak rendelkeznie kell egy sudo jogosultságokkal rendelkező felhasználóval és a tűzfalnak bekapcsolt állapotban kell lennie: BE.
- Ha segítségre van szüksége az Ansible beállításához, tekintse meg a az Ansible telepítéséről és konfigurálásáról szóló útmutatót Ubuntu 20.04-en.
Mi az Ansible Playbook célja?
Ez az Ansible playbook egy alternatív módszer a LAMP Stack beállítása – Linux Apache MySQL PHP.
Az Ansible playbook futtatása a következő műveleteket fogja végrehajtani az Ön Ansible gazdagépein:
-
Telepíti az aptitude csomagkezelőt, amely az apt alternatívája, és amelyet az Ansible előnyben részesít.
-
Telepíti az összes szükséges LAMP csomagot.
-
Létrehoz egy új Apache VirtualHost-ot, és konfigurál egy dedikált dokumentumgyökeret (document root).
-
Bekapcsolja (BE állapotba) az új VirtualHost.
-
Kikapcsolja (KI állapotba) az alapértelmezett Apache webhelyet, azaz a disable_default változót a következőre állítja: true.
-
Jelszót választ a MySQL root felhasználó számára.
-
Eltávolítja az anonim MySQL fiókokat és a tesztadatbázist.
-
Beállítja az UFW-t, hogy engedélyezze a HTTP-forgalmat a konfigurált porton, ahol az alapértelmezett a 80.
-
Beállít egy PHP tesztszkriptet.
Az Ansible playbook futtatásának befejezése után egy Apache-on futó webes PHP-környezetet fog látni a megadott konfigurációknak megfelelően.
Az Ansible Playbook használata
Először szerezze be a LAMP playbookot és annak függőségeit a do-community/ansible-playbooks tárolóból (repository). Ezután klónozza a LAMP playbookot tartalmazó tárolót az Ansible vezérlőcsomóponton belüli helyi mappába.
Futtassa a git pull parancsot, hogy biztosan hozzáférjen a megfelelő tartalomhoz, amelyet ebben az útmutatóban használni fogunk:
|
1 2 |
cd ~/ansible-playbooks git pull |
Ha először használja a do-community/ansible-playbooks tárolót, fontolja meg a tároló klónozását a saját (home) mappájába:
|
1 2 3 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Lépjen be a lamp_ubuntu2004 mappába, és a következő struktúrát fogja látni:
|
1 2 3 4 5 6 7 8 |
lamp_ubuntu2004 ├── files │ ├── apache.conf.j2 │ └── info.php.j2 ├── vars │ └── default.yml ├── playbook.yml └── readme.md |
Íme egy áttekintés arról, hogy mit jelentenek ezek a fájlok:
-
files/info.php.j2: Ez egy sablonfájl, amellyel beállíthat egy PHP tesztoldalt a webszerver gyökerében.
-
files/apache.conf.j2: Egy másik sablonfájl, amely az Apache VirtualHost beállítására szolgál.
-
vars/default.yml: Ez egy változófájl a playbook beállításainak testreszabásához.
-
playbook.yml: Ez a fájl tartalmazza a távoli szerver(ek)en végrehajtandó feladatok teljes tartalmát.
-
readme.md: Egy olvasható fájl, amely a playbookkal kapcsolatos információkat tartalmazza.
Szabjuk testre a MySQL és Apache konfigurációkat a playbook változófájljának módosításával. Navigáljon a lamp_ubuntu2004 könyvtárba, és nyissa meg a vars/default.yml fájlt a nano szerkesztővel:
|
1 2 |
cd lamp_ubuntu2004 nano vars/default.yml |
A vars/default.yml fájl megnyitásakor megjelenik a módosítandó változók listája:
|
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 |
Ismerjük meg részletesen az egyes változókat:
-
mysql_root_password: Tárolja a jelszót a root MySQL fiókhoz.
-
app_user: Ez egy távoli, nem root felhasználó az Ansible gazdagépen, aki az alkalmazásfájlok tulajdonosaként jár el.
-
http_host: Megjeleníti a domain nevét.
-
http_conf: Megjeleníti az Apache-on belül létrehozott konfigurációs fájl nevét.
-
http_port: Ez a virtuális gazdagép HTTP portja, és a 80 az alapértelmezett.
-
disable_default: Az Apache-hoz mellékelt alapértelmezett beállítások visszavonására szolgál.
Ezután mentse el és zárja be a vars/default.yml fájlt.
Miután minden beállítás elkészült, készen állunk a playbook futtatására a szervereken. Alapértelmezés szerint a playbookokban szereplő legtöbb szerver úgy van konfigurálva, hogy az inventory-kban található összes szerveren lefusson. Használjuk a -l jelzőt, hogy csak egyetlen szerverre vagy a csoport egy kiválasztott részhalmazára legyen hatással a playbook. Alternatív megoldásként használhatjuk az -u jelzőt, hogy részletes képet kapjunk arról, melyik távoli szerverhez kapcsolódunk, és mi fut a távoli gazdagépeken.
Futtassuk a playbookot egy szerveren: server1 és kapcsolódjunk hozzá egy felhasználóval, aki justin:
|
1 |
ansible-playbook playbook.yml -l server1 -u justin |
A következőhöz hasonló kimenetet fog kapni:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PLAY [all] ********************************************************************************************************* TASK [Összegyűjtés Tények] *********************************************************************************************************ok: [server1] TASK [Telepítés előfeltételek] *********************************************************************************************************ok: [server1] => (item=aptitude) ... TASK [UFW - Engedélyezés HTTP ezen: port 80] ********************************************************************************************************* módosult: [server1] TASK [Beállítás Up PHP Info Oldal] ********************************************************************************************************* módosult: [server1] FUTÁS HANDLER [Újratöltés Apache] ********************************************************************************************************* módosult: [server1] FUTÁS HANDLER [Újraindítás Apache] ********************************************************************************************************* módosult: [server1] PLAY ÖSSZEGZÉS ********************************************************************************************************* server1 : ok=15 módosult=11 elérhetetlen=0 sikertelen=0 kihagyott=0 megmentett=0 figyelmen kívül hagyott=0 |
Miután látja, hogy a playbook futása befejeződött, nyissa meg a webböngészőjét, és lépjen a szerver gazdagépére. Ne felejtse el hozzáfűzni a /info.php részt az IP-cím végéhez:
|
1 |
http://server_host_or_IP/info.php |
Erre az URL-re kattintva egy ehhez hasonló oldalt fog látni:
|
Figyelmeztetés: A megjelenített oldal érzékeny információkat tartalmaz a PHP-környezetéről. Ezért javasoljuk, hogy távolítsa el a személyes adatait a szerverről a következő paranccsal: rm -f /var/www/info.php |
Mi van a Playbookban?
Ezután értsük meg az ansible-playbook tartalmában használt fájlok jelentését és jelentőségét:
-
vars/default.yml
A default.yml változófájl tartalmazza a MySQL root fiók tartománynevét és jelszavát. Ezek az ansible-playbook feladataiban használt alapértelmezett értékek:
|
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
Az apache.conf.j2 fájl egy Jinja 2 sablonfájl, amely egy új Apache VirtualHost konfigurálására szolgál. Az ebben a sablonban használt változókat a vars/default.yml változófájlban kell meghatározni:
|
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
Hasonlóan a files/apache.conf.j2 fájlhoz, az info.php.j2 fájl is egy Jinja sablon. Ezt a fájlt egy teszt PHP-szkript beállítására használjuk egy újonnan konfigurált LAMP-szerver dokumentumgyökerében:
|
1 2 |
<?php phpinfo(); |
-
playbook.yml
A playbook.yml fájlban vannak meghatározva a telepítés összes feladatai. Ebben a fájlban van konfigurálva az összes LAMP stack. A megcélzott szerverek csoportjának meghatározásával kezdődik, amelynek értéke all. Emellett a become értékét true-ra állítja ( become: true), és meghatározza az összes végrehajtandó feladatot. Ezután a yaml fájl tartalmazza az alapértelmezett fájlt, amely a vars/default.yml változófájl, a konfigurációs beállítások betöltéséhez:
|
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: Telepítés előfeltételek apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes loop: [ 'aptitude' ] #Apache konfiguráció - name: Telepítés LAMP csomagok apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] - name: Létrehozás dokumentum gyökérkönyvtár file: path: "/var/www/{{ http_host }}" state: directory owner: "{{ app_user }}" mode: '0755' - name: Beállítás up Apache virtuális gazdagép template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Újratöltés Apache - name: Engedélyezés új webhely shell: /usr/sbin/a2ensite {{ http_conf }} notify: Újratöltés Apache - name: Letiltás alapértelmezett Apache webhely shell: /usr/sbin/a2dissite 000-default.conf when: disable_default notify: Újratöltés Apache # MySQL konfiguráció - name: Beállítja a root jelszót mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock - name: Eltávolítja az összes névtelen felhasználói fiókot mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" - name: Eltávolítja a MySQL teszt adatbázist mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" # UFW konfiguráció - name: "UFW - HTTP engedélyezése a(z) {{ http_port }} porton" ufw: rule: allow port: "{{ http_port }}" proto: tcp # PHP Info oldal - name: Beállítja a PHP Info oldalt template: src: "files/info.php.j2" dest: "/var/www/{{ http_host }}/info.php" handlers: - name: Újratöltés Apache service: name: apache2 state: reloaded - name: Újraindítás Apache service: name: apache2 state: restarted |
Ezeket a fájlokat a projekt igényei és követelményei alapján módosíthatja.
Összegzés
Ebben az útmutatóban végigvettük a LAMP telepítésének és konfigurálásának lépéseit egy távoli szerveren az Ansible segítségével. Számos egyéb testreszabási lehetőség is létezik, amellyel kísérletezhet. Például az Ansible hivatalos dokumentációjának használata, valamint a mysql_user modul eseteinek alkalmazása az Ansible-ből kiváló módja a szintlépésnek. Emellett kövesse az ebben az útmutatóban ismertetett lépéseket az automatizálás gyakorlásához más konfigurációkezelő eszközök és operációs rendszerek használatával a nehézségi szint növelése érdekében.
Új még Önnek a LAMP-verem, és szeretne mélyebben elmerülni ebben a témában? Fedezze fel a következő útmutatókat a blogunkon:
- Hogyan telepítsük a WordPress-t LAMP-pal Ubuntu 20.04-en
- Hogyan telepítsük a Linux, Apache, MySQL, PHP (LAMP) szoftvercsomagot Centos-7-re
- Hogyan telepítsük a LEMP szoftvercsomagot (Linux, Nginx, MySQL, PHP) Ubuntu 20.04-re
Kellemes számítógéphasználatot!

Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.