Automatizacija poslužitelja siguran je i pouzdan proces upravljanja i nadzora poslužitelja na učinkovit i tehnološki napredan način. Za razliku od tradicionalnog načina upravljanja poslužiteljima u podatkovnim centrima koje kontrolira namjenski tim stručnjaka, svim se poslužiteljima upravlja pomoću automatizacije. Kao rezultat toga, ljudske su pogreške svedene na minimum.
Alati za upravljanje konfiguracijom poput Ansible, Puppet, Terraform, da spomenemo samo neke, obično se koriste za automatizaciju poslužitelja. Ovi alati postavljaju poslužitelje pomoću automatizacije uspostavljanjem standardnih procedura za nove poslužitelje, istovremeno uklanjajući potencijalne pogreške do kojih dolazi pri ručnom radu.
Ansible je robustan projekt otvorenog koda. Fleksibilan je, jednostavan za korištenje i ima maksimalno pojednostavljenu arhitekturu. Za korištenje Ansible playbookova nije potrebno programersko predznanje i ne zahtijeva instaliranje softvera na čvorovima. Iznad svega, opremljen je izvrsnim mogućnostima koje omogućuju pisanje skripti i pojednostavljenje automatizacije.
U ovom vodiču ćemo vas provesti kroz korake instalacije i konfiguracije LAMP-a na Ubuntu 20.04 s Ansibleom.
Preduvjeti
Kako biste pratili ovaj vodič, trebat će vam:
- instaliran Ubuntu na vašem sustavu.
- Jedan ili više Ansible hostova: Jedan ili više udaljenih Ansible hostova koji pokreću najnoviji Ubuntu moraju se inicijalno postaviti. Slijedite vodič Automating Server Setup using Ansible and Ubuntu 20.04 za postavljanje.
- Jedan Ansible kontrolni čvor: Ubuntu računalo s instaliranim i konfiguriranim Ansibleom, povezano s vašim Ansible hostovima pomoću SSH ključeva:
-
- Kontrolni čvor mora imati korisnika sa sudo privilegijama i vatrozid koji je UKLJUČEN.
- Ako vam je potrebna pomoć pri postavljanju Ansiblea, pogledajte vodič o instalaciji i konfiguraciji Ansiblea na Ubuntu 20.04.
Koja je svrha Ansible playbooka?
Ovaj Ansible playbook alternativni je način prolaska kroz proceduru opisanu u našem vodiču Postavljanje LAMP stoga – Linux Apache MySQL PHP.
Pokretanje Ansible playbooka rezultirat će sljedećim radnjama na vašim Ansible hostovima:
-
Instalaciju aptitude, alternative za apt upravitelj paketa koji preferira Ansible.
-
Instalaciju svih potrebnih LAMP paketa.
-
Izradu novog Apache VirtualHost i konfiguraciju namjenskog korijenskog direktorija dokumenata.
-
Postavljanje na UKLJUČENO novog VirtualHost.
-
Postavljanje na ISKLJUČENO zadane Apache web stranice, tj. postavljanje disable_default varijable na true.
-
Odabir lozinke za MySQL root korisnika.
-
Uklanjanje anonimnih MySQL računa i testne baze podataka.
-
Postavljanje UFW-a za dopuštanje HTTP prometa na konfiguriranom priključku, gdje je zadani 80.
-
Postavljanje PHP testne skripte.
Nakon što Ansible playbook završi s radom, vidjet ćete web PHP okruženje koje se izvodi na Apacheu u skladu s konfiguracijama koje smo postavili.
Korištenje Ansible playbooka
Prvo dohvatite LAMP playbook i njegove ovisnosti iz do-community/ansible-playbooks repozitorija. Zatim klonirajte repozitorij s LAMP playbookom u lokalnu mapu unutar Ansible kontrolnog čvora.
Pokrenite naredbu git pull kako biste bili sigurni da imate pristup ispravnom sadržaju koji ćemo koristiti u ovom vodiču:
|
1 2 |
cd ~/ansible-playbooks git pull |
Ako prvi put koristite repozitorij do-community/ansible-playbooks, razmislite o kloniranju repozitorija u svoju početnu mapu:
|
1 2 3 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Idite u mapu lamp_ubuntu2004 i vidjet ćete strukturu:
|
1 2 3 4 5 6 7 8 |
lamp_ubuntu2004 ├── files │ ├── apache.conf.j2 │ └── info.php.j2 ├── vars │ └── default.yml ├── playbook.yml └── readme.md |
Evo pregleda što ove datoteke znače:
-
files/info.php.j2: Ovo je datoteka predloška u kojoj možete postaviti PHP testnu stranicu u korijenu web poslužitelja.
-
files/apache.conf.j2: Još jedna datoteka predloška koja se koristi za postavljanje Apache VirtualHosta.
-
vars/default.yml: To je datoteka varijabli za prilagodbu postavki playbooka.
-
playbook.yml: Ova datoteka sadrži sav sadržaj zadataka koji će se izvršiti na udaljenom poslužitelju/ima.
-
readme.md: Datoteka za čitanje koja sadrži informacije o ovom playbooku.
Prilagodimo konfiguracije za MySQL i Apache unošenjem promjena u datoteku varijabli playbooka. Idite u lamp_ubuntu2004 direktorij i otvorite vars/default.yml datoteku pomoću nano uređivača:
|
1 2 |
cd lamp_ubuntu2004 nano vars/default.yml |
Nakon otvaranja vars/default.yml datoteke, prikazat će se popis varijabli koje je potrebno izmijeniti:
|
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 |
Pojasnimo detaljno svaku od varijabli:
-
mysql_root_password: Pohranjuje lozinku za root MySQL račun.
-
app_user: To je udaljeni korisnik koji nije root na Ansible poslužitelju i koji djeluje kao vlasnik datoteka aplikacije.
-
http_host: Prikazuje naziv vaše domene.
-
http_conf: Prikazuje naziv konfiguracijske datoteke stvorene unutar Apachea.
-
http_port: To je HTTP port za ovaj virtualni poslužitelj, a 80 je zadana vrijednost.
-
disable_default: Koristi se za poništavanje zadanih opcija koje dolaze s Apacheom.
Zatim spremite i zatvorite vars/default.yml datoteku.
Nakon što je sve postavljeno, spremni smo pokrenuti ovaj playbook na poslužiteljima. Prema zadanim postavkama, većina poslužitelja u playbookovima konfigurirana je za izvršavanje na svakom poslužitelju u inventarima. Upotrijebimo -l zastavicu kako bismo utjecali samo na jedan poslužitelj ili odabrani podskup grupa na koje playbook utječe. Alternativno, možemo koristiti -u zastavicu kako bismo dobili detaljan prikaz o tome s kojim se udaljenim poslužiteljem uspostavlja veza i što se izvršava na udaljenim domaćinima.
Izvršimo playbook na jednom poslužitelju server1 i povežimo ga s jednim korisnikom kao justin:
|
1 |
ansible-playbook playbook.yml -l server1 -u justin |
Dobit ćete izlaz sličan ovome:
|
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 |
Nakon što vidite da je izvođenje playbooka završeno, idite u svoj web preglednik i pristupite domaćinu poslužitelja. Ne zaboravite dodati /info.php na kraj IP adrese:
|
1 |
http://server_host_or_IP/info.php |
Klikom na ovaj URL vidjet ćete stranicu poput ove:
|
Upozorenje: Prikazana stranica sadrži osjetljive informacije o vašem PHP okruženju. Stoga se preporučuje uklanjanje vaših osobnih podataka s poslužitelja pomoću sljedeće naredbe: rm -f /var/www/info.php |
Što se nalazi u Playbooku?
Zatim, shvatimo značenje i važnost datoteka korištenih u ansible-playbook sadržaju:
-
vars/default.yml
Datoteka default.yml s varijablama sadrži naziv domene i lozinku za MySQL root račun. To su zadane vrijednosti koje se koriste u ansible-playbook zadacima:
|
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
Datoteka apache.conf.j2 je Jinja 2 predložak koji se koristi za konfiguraciju novog Apache VirtualHost-a. Varijable korištene unutar ovog predloška moraju biti definirane u vars/default.yml datoteci s varijablama:
|
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
Slično kao i files/apache.conf.j2, datoteka info.php.j2 je također Jinja predložak. Ovu datoteku koristimo za postavljanje testne PHP skripte u korijenski direktorij dokumenata novokonfiguriranog LAMP poslužitelja:
|
1 2 |
<?php phpinfo(); |
-
playbook.yml
U datoteci playbook.yml definirani su svi zadaci iz ove konfiguracije. U ovoj datoteci konfigurirani su svi LAMP stogovi. Počinje definiranjem grupe ciljanih poslužitelja i postavljena je na all. Također, uzima vrijednost become kao true ( become: true) i definira sve zadatke koje treba izvršiti. Zatim, yaml datoteka ima zadanu datoteku, a to je vars/default.yml datoteka s varijablama, za učitavanje konfiguracijskih opcija:
|
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: Instaliraj preduvjete apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes loop: [ 'aptitude' ] #Apache konfiguracija - name: Instaliraj LAMP pakete apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] - name: Kreiraj korijenski direktorij file: path: "/var/www/{{ http_host }}" state: directory owner: "{{ app_user }}" mode: '0755' - name: Postavi up Apache virtualni poslužitelj template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Ponovno učitaj Apache - name: Omogući novu stranicu shell: /usr/sbin/a2ensite {{ http_conf }} notify: Ponovno učitaj Apache - name: Onemogući zadanu Apache stranicu shell: /usr/sbin/a2dissite 000-default.conf when: disable_default notify: Ponovno učitaj Apache # MySQL konfiguracija - name: Postavlja the root lozinku mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock - name: Uklanja sve anonimne korisničke račune mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" - name: Uklanja the MySQL testnu bazu podataka mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" # UFW konfiguracija - name: "UFW - Dopusti HTTP na portu {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp # PHP Info stranica - name: Postavlja Up PHP Info stranicu template: src: "files/info.php.j2" dest: "/var/www/{{ http_host }}/info.php" handlers: - name: Ponovno učitaj Apache service: name: apache2 state: reloaded - name: Ponovno pokreni Apache service: name: apache2 state: restarted |
Možete modificirati ove datoteke na temelju potreba i zahtjeva vašeg projekta.
Zaključak
U ovom vodiču prošli smo kroz korake instalacije i konfiguracije LAMP-a na udaljenom poslužitelju pomoću Ansiblea. Postoji mnoštvo drugih opcija prilagodbe s kojima možete eksperimentirati. Na primjer, korištenje službene Ansible dokumentacije i korištenje slučajeva mysql_user iz Ansible modula izvrstan je način da podignete svoje vještine na višu razinu. Također, slijedite korake opisane u ovom vodiču kako biste vježbali automatizaciju koristeći druge alate za upravljanje konfiguracijom i operacijske sustave kako biste povećali razinu težine.
Jeste li novi u LAMP stogu i želite dublje istražiti ovu temu? Istražite sljedeće vodiče na našem blogu:
- Kako instalirati WordPress s LAMP-om na Ubuntu 20.04
- Kako instalirati Linux, Apache, MySQL, PHP (LAMP) stog na Centos-7
- Kako instalirati LEMP stog Linux Nginx MySQL PHP na Ubuntu 20.04
Ugodan rad na računalu!

Komentari
Još nema komentara. Budite prvi.