Vagrant

8 artykułów

Instalacja i konfiguracja Mysql-a przez Puppet-a

Ostatnim elementem serwera LAMP, który konfigurujemy jest baza danych MySQL lub MariaDB. W związku z czym, wzbogacimy konfigurację z poprzednich wpisów o instalację i konfigurację bazy danych. Co pod koniec wpisu da nam w pełni działający serwer LAMP pod nasze przyszłe projekty.

11 paź 2017

Konfiguracja Nginx-a przez Puppet-a

W poprzednim wpisie zainstalowaliśmy serwer Nginx-a wykorzystując Puppet-a. Tym razem zajmiemy się jego podstawową konfiguracją. Wyjściową bazą będzie kod dostępny na GitHub-ie z poprzedniego wpisu, więc jeśli go przeoczyliście to zapraszam do zapoznania się oraz pobrania kodu.

14 wrz 2017

Puppet czyli jak udoskonalić instalację aplikacji w Vagrancie

Chodzi mi o proces instalacji i konfiguracji aplikacji na wirtualnej maszynie, obecnie odbywa się to poprzez wywołanie skryptu powłoki. Skrypt instaluje i konfiguruje nam odpowiednio środowisko, jednak zmiana dystrybucji czy też jej aktualizacja, może pociągać za sobą konieczność wprowadzenia wielu modyfikacji 🙁 Rozwiązaniem tej sytuacji jest Puppet.

6 wrz 2017

Vagrant udostępnianie katalogów

Wirtualne maszyny takie jak VirtualBox mają możliwość udostępniania katalogów z komputera gospodarza (host) na maszynę gościa (guest). Umożliwia to w bardzo łatwy sposób dostęp do danych bowiem wystarczy wejść do określonego katalogu i mamy dostęp.

10 lip 2017

Zarządzanie wieloma maszynami w Vagrantfile

Vagrantfile jest konfiguracją wirtualnej maszyny, która ma zostać zbudowana przez Vagranta. Jednak do tej pory mieliśmy do czynienia tylko z jedną wirtualną maszyną, a możliwe jest skonfigurowanie wielu maszyn w ramach jednego pliku Vagrantfile.

18 cze 2017

Konfiguracja sieci w Vagrant

Jako że podstawy teoretyczne odnośnie Vagrnt-a już mamy z poprzedniego wpisu. To czas przystąpić do działania, zainstalujemy Vagrant-a i przygotujemy swój pierwszy Vagrantfile.

16 cze 2017

Vagrant instalacja i konfiguracja środowiska

Jako że podstawy teoretyczne odnośnie Vagrnt-a już mamy z poprzedniego wpisu. To czas przystąpić do działania, zainstalujemy Vagrant-a i przygotujemy swój pierwszy Vagrantfile.

9 cze 2017

Vagrant i Docker czyli popularne metody wirtualizacji

Wirtualizacja zawsze kojarzyła mi się z wirtualną maszyną na której testowałem nowe wydanie linux-a lub uruchamiałem Windows-a. W przypadku gdy zarządzamy jakimiś dużym serwerem, wirtualizacja świetnie się sprawdza do stawiania kolejnych wirtualnych maszyn. Wystarczy przygotować wzorcową wirtualkę i ją kopiować dla nowych projektów.

7 cze 2017

Konfiguracja Nginx-a przez Puppet-a

W poprzednim wpisie zainstalowaliśmy serwer Nginx-a wykorzystując Puppet-a. Tym razem zajmiemy się jego podstawową konfiguracją.

Wyjściową bazą będzie kod dostępny na GitHub-ie z poprzedniego wpisu, więc jeśli go przeoczyliście to zapraszam do zapoznania się oraz pobrania kodu.

Usuwanie zbędnych pakietów

Jako że naszym serwerem www ma być Nginx to powinniśmy usunąć serwer Apache jeśli znajduje się w systemie. Za to zadanie będzie odpowiedzialny poniższy kod

package { 'apache2.2-common':
    ensure => absent
}

Podobnie jak w poprzednich przypadkach tworzymy zasób typu package, który odwołuje się w tym przypadku do serwera Apache apache2.2-common. Następnie upewniamy się poprzez parametr ensure, że pakiet jest niedostępny (jeśli zostanie znaleziony w systemie Puppet odinstaluje go).

Pliki konfiguracyjne serwera Nginx

Serwer www w standardowej konfiguracji wyświetli nam stronę powitalną jednak konfiguracja ta może nie spełniać naszych wymagań. W takim przypadku możemy przygotować własną konfigurację w formie pliku i nadpisać domyślną.

Zacznijmy od utworzenia wzorcowego pliku site.conf z konfiguracją serwera Nginx, który umieścimy w katalogu modules/nginx/files.

server {
 
    listen 80 default_server;
    listen [::]:80 default_server;
 
    root /var/www/html;
 
    index index.html;
 
    server_name _;
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    location ~ /\.ht {
        deny all;
    }
}

Konfiguracja nie zawiera niczego istotnego, abym musieli się jej bliżej przyglądać. Absolutne minimum, które pozwoli wyświetlić naszą stronę. Dodajemy teraz odpowiedni wpis w naszej recepturze.

file { '/etc/nginx/sites-enabled/default': 
    source => 'puppet:///modules/nginx/site.conf', 
    notify => Service['nginx']
} 

Dodany został nowy zasób typu file odwołujący się do pliku /etc/nginx/sites-enabled/default, gdzie przechowywana jest konfiguracja strony powitalnej. My nadpiszemy ją naszą konfiguracją, w tym celu ustawiamy następujące parametry:

  • source lokalizacja pliku źródłowego, w tym przypadku został wykorzystany adres URL Puppet-a o czym świadczy zapis puppet://. I przekłada się bezpośrednio na strukturę katalogów jaką należy utworzyć.

    Jak zapewne zauważyliście w strukturze katalogów znajduje się katalog files, którego w ścieżce nie ma. Wynika to z faktu, że ścieżki URL Puppet-a odwołują się do modułów, których struktura jest stała i pewne elementy mogą zostać pominięte jak w tym przypadku nazwa katalogu files. Drugim istotnym elementem ścieżki jest jej skrócenie, zapis puppet:/// jest niejawnym odwołaniem do lokalnego zasobu, który moglibyśmy zapisać w dłuższej formie puppet://localhost/.

  • notify parametr ten w połączeniu z Service['nginx'] mówi Puppet-owi o konieczności restartu usługi, co jest wskazane w tym przypadku, gdyż nastąpiła modyfikacja konfiguracji serwera

W związku z wykorzystaniem adresów URL Puppet-a konieczne jest dodanie w pliku Vagrantfile wpisu informującego Puppet-a o lokalizacji modułów. Poniższy wpis dodajemy w sekcji puppet.

puppet.module_path = "modules"

Jesteśmy już prawie u celu, jeśli zbudujemy maszynę w tym momencie to w rezultacie zobaczymy coś takiego

Wynika to z braku strony do wyświetlenia. Więc dodajemy kolejny zasób z plikiem strony.

file { '/var/www/html/index.html': 
    source => 'puppet:///modules/nginx/index.html', 
    require => File['/etc/nginx/sites-enabled/default']
} 

W zdefiniowanym zasobie mamy już same znane parametry, czyli source (plik źródłowy) oraz require (spełnienie jakiegoś wymagania). Parametr require do tej pory polegał na zainstalowaniu odpowiedniego oprogramowania. Tym razem naszym wymaganiem będzie pomyślna zmiana konfiguracji serwera Nginx więc odwołujemy się do wcześniejszego zasobu typu file. Po wprowadzeniu zmian budujemy maszynę co powinno zaowocować pojawieniem się poniższej strony:

Nginx + PHP

Kiedy mamy już naszą pierwszą działającą stronę czas dodać to co tygryski lubią najbardziej czyli PHP 🙂 Tutaj niczym już was nie zaskoczę bowiem konieczne będzie wymuszenie instalacji php oraz modyfikacja konfiguracji serwera Nginx. Więc zabierajmy się do pracy, zaczynamy od instalacji php dodając odpowiedni zasób.

package { 'php7.0':
  ensure => installed,
  require => Package['nginx']
}

Instalujemy php w wersji 7.0 i jedynym naszym wymaganiem będzie zainstalowany serwer Nginx. Kolejny krok to modyfikacja konfiguracji serwera w której dodajemy obsługę php. Zaczynamy od dodania pliku index.php obok index.html jako poszukiwanego pliku indeksu:

index index.html index.php;

Następnie dodajemy obsługę plików z rozszerzeniem .php:

location ~ \.php$ {
 
    fastcgi_index index.php;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

I ostatni element czyli dodanie nowego zasobu do pliku manifests/default.pp, który będzie testowym plikiem php wyświetlającym podstawowe informacje.

file { '/var/www/html/index.php':
  source => 'puppet:///modules/nginx/index.php',
  require => File['/etc/nginx/sites-enabled/default']
}

Sam plik index.php wygląda następująco:

<?php
 
phpinfo();

Po wprowadzeniu powyższych modyfikacji możemy zbudować maszynę i przetestować czy rzeczywiście nasz serwer wspiera php.

Ważne jest, aby w adresie dodać /index.php. Jest to spowodowane faktem, że w konfiguracji serwera Nginx w ustawieniu index plik index.php jest na drugim miejscu. Zaś w katalogu mamy dwa pliki index, jeden z rozszerzeniem html drugi php. W związku z czym serwer sprawdza kolejno pliki zdefiniowane na liście index i pierwsze trafienie jest wyświetlane domyślnie, w tym przypadku index.html dlatego konieczne jest dodanie nazwy pliku w adresie serwera.

Podsumowanie

Wpis ten pokazał jak zorganizować pliki konfiguracyjne serwera oraz jakie mają one przełożenie na adres URL wykorzystywany przez Puppet-a. Dowiedzieliśmy się także jak określić wymagania pomiędzy plikami oraz zrestartować serwer po wprowadzeniu modyfikacji w plikach. Są to małe kroki, ale prowadzą nas one do lepszego poznania narzędzia dzięki któremu będziemy mogli w pełni zautomatyzować proces instalacji oprogramowania na serwerach.

Oczywiście wszystko dostępne jest na GitHub-ie pod tagiem #step2