Palvelinten hallinta (2018) H2

Kurssin toisen tunnin aiheena on eri demonien hallinta ja muuttaminen. Kurssin toisen tunnin kotitehtävät ovat:

h2

Tehtävät tästä eteenpäin (h2, h3…) tulee ratkaista tekemällä Saltin tila (state), ellei tehtävänannosta muuta ilmene. Tee ensin käsin, automatisoi vasta sitten. Muista testata lopputulos.

a) Opiskele yllä aikataulussa olevat artikkelit. (Tätä lukutehtävää ei tarvitse raportoida). Luettava materiaali on kunkin tapaamiskerran kohdalla, esimerkiksi nyt “2. Package-file-server. […] Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt..”

b) Laita käyttäjien kotisivut toimimaan Apachella.

c) Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.

f) Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa. Voit muuttaa jotain toista asetusta samoista demoneista tai valita kokonaan eri demonit.

========================================================================

Ympäristö: Toteutan tehtävän AWS ympäristössä käyttäen heidän pilvipalvelin-koneita (EC2). Luodaan kaksi virtuaalikonetta, ja yhdistyn näihin koneisiin SSH tunnelin avulla. Virtuaalikoneiden käyttöjärjestelmänä toimii Ubuntu Server 16.04 LTS (HVM)

(HVM = hardware virtual machine) 

Yhdistän kaksi EC2 virtuaalikonetta toisiinsa SALT yhteydellä käyttäen edellisen blogi julkaisuni ohjeita.

Kaikki julkasun tiedostot löytyvät GitHub-sivultani.

b) 

b) Laita käyttäjien kotisivut toimimaan Apachella.

Ennen ensimmäisen kotitehtävän aloittamista, kokeilen Salt yhteyttä yksinkertaisella komennolla master koneessa.

$ sudo salt ”*” cmd.run whoami

Screen Shot 2018-04-04 at 12.01.01

Tästä vastauksesta voidaan olettaa että yhteys toimii.

Tehtävänä on saada käyttäjien koti-hakemiston nettisivut toimimaan käyttäen Apachea. Aloin tehtävän luomalla master koneessa .sls tiedoston tuolle tilalle.

$ sudo mkdir /srv/salt && sudo touch /srv/salt/apache.sls

Tämä komento luo tarvittavan ”salt” kansion /srv/ kansion sisälle, salt hakee täältä kaikki tilat ja käyttää tätä ns. ”kotihakemistona”. Tämän jälkeen ”touch” luo uuden tiedoston nimeltä apache.sls.

Kirjoitetaan tuohon apache.sls tiedostoon haluamamme tila.

$ sudo nano /srv/salt/apache.sls

(Voit käyttää mitä vain tekstinkäsittely-ohjelmaa, itse tykkään nanosta)

Screen Shot 2018-04-04 at 13.06.30.png

Tämä salt state käskee minioni(t) asentamaan apache2:n. Korvaamaan Apachen oman etusivun omallani, jonka tein tämän jälkeen tiedostoon /srv/salt/apache2/replace.html. Tämän jälkeen minioni(t) luovat symlinkit userdir modille.  Tämän jälkeen käynnistetään Apache uudestaan jotta uusimmat muutokset otetaan käyttöön. (Otin esimerkkiä Tero Karvisen- sivulta)

(Seuraava ei kuullu kotiläksyihin, mutta halusin korvata Apachen oman etusivun omallani joten kirjoitin lyhyen Vue.js tiedostoon: /srv/salt/apache2/replace.html)

Screen Shot 2018-04-04 at 13.18.35.png

$ sudo salt ”*” state.apply apache

Screen Shot 2018-04-04 at 13.06.06.png

Salt ilmoittaa että kaikki minionit ovat päässeet haluttuun stateen/tilaan onnistuneesti.

Kokeilin toimiiko käyttäjän omat kotisivut ubuntu -käyttäjällä. Seuraavat komennot ajettiin minionissa:

$ mkdir /home/ubuntu/public_html

$ nano /home/ubuntu/public_html/index.html

Screen Shot 2018-04-04 at 13.23.34

Avaan portin 80/tcp minioni koneelle AWS konsolista ja syötän tämän IP + ubuntu selaimeeni.

Screen Shot 2018-04-04 at 13.24.38

c)

c) Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)

Muokataan b) kohdan apache.sls tiedostoa tätä tehtävää varten.

Screen Shot 2018-04-04 at 14.02.11.png

 

Lisäsin siis olemassa olevaan apache.sls tiedostoon muutaman rivin:

  • Asenna ”libapache2-mod-php”
  • Korvaa /etc/apache2/mods-available/php7.0.conf -tiedosto omalla, joka sijaitsee /srv/salt/apache2/ -kansiossa.
    • Tässä kohtaa huomasin että ongelmana tulee vastaan kun tulevaisuudessa tulee uudempia php versioita tai jos minioni koneelle ei ole mahdollista asentaa php7.0.
  • Käynnistää Apache2 uudestaan kun tiedostossa – /etc/apache2/mods-available/php7.0.conf tapahtuu muutos

Tämän jälkeen luodaan tuo php7.0.conf tiedosto masterin /srv/salt/apache2/ -kansioon.

$ sudo nano /srv/salt/apache2/php7.0.conf

Screen Shot 2018-04-04 at 13.54.15.png

Kyseessä on siis oletus tiedosto, josta on kommentoitu pois 5 viimeistä riviä. Kommentoimalla nämä rivit pois, saavat käyttäjät PHP toimimaan public_html kansiossaan.

Käsken Masterissa kaikkia minioneita tähän stateen:

$ sudo salt ”*” state.apply apache

Minioni- palauttaa vastaukseksi että on päässyt onnistuneesti tilaan.

Kokeilen tätä muuttamalla minionissa /home/ubuntu/public_html/index.html- tiedostoa.

Screen Shot 2018-04-04 at 14.06.22

Tämän jälkeen muutan kyseisen tiedoston nimeä vielä.

$ mv /home/ubuntu/public_html/index.html /home/ubuntu/public_html/index.php

Tämän jälkeen päivitän selaimessa tuon käyttäjän sivun.

Screen Shot 2018-04-04 at 14.16.25.png

d)

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

hosts- tiedoston muokkaaminen ei minua auta, koska koneet joissa teen kotitehtäviä ovat pilvessä (AWS). Käytän omaa domainia ja ohjaan liikenteen minion koneeseeni.

websitea.heikkima.fi ja websiteb.heikkima.fi (Palvelimet suljettiin 13.04.2018)

Screen Shot 2018-04-08 at 19.00.23.png

Muokkasin olemassa olevaa apache.sls tiedostoa, joka luotiin aikaisemmissa tehtävissä. Lisäsin tiedostoon tarvittavat muutokset.

Screen Shot 2018-04-08 at 19.11.44.png

Eli lisäsin uuden kohdan, jossa luodaan minion- koneelle uusi tiedosto kohteeseen /var/www/html2/index.html – source tiedosto löytyy taas apache/ nimisestä kansiosta /srv/salt/ -kansion alta. HUOM. Koska Minioni koneella ei-todennäköisesti löydy /var/www/html2/- nimistä kansiota, on tärkeää lisätä ”makedirs: True”

Screen Shot 2018-04-08 at 19.17.59.png

Muokkaan olemassa olevaa replace.html tiedostoa, jonka loin kohdassa b). Luon myös uuden tiedoston ”replace2.html” – Molemmat ovat Vue.js kirjastolla tehty.

Screen Shot 2018-04-08 at 20.01.52.png

Seuraavaksi korvaan Apachen oletus sivun configuraatio tiedoston omallani. Tiedoston sijainti on: ”/etc/apache2/sites-enabled/000-default.conf”.

Mitä on nimipohjainen virtuaalipalvelin (name based virtual hosting)? Nimipohjainen virutaalipalvelimen avulla nettisivuilla voi olla sama IP, mutta eri sisältö. Apache osaa katsoa DNS osoitteen ja ohjaa tämän avulla oikeeseen tiedostoon. Omassa kotitehtävässäni Apache ohjaa ”websitea.heikkima.fi” kutsun osoitteeseen /var/www/html ja ”websiteb.heikkima.fi” kutsun osoitteeseen /var/www/html2/ – Jos selaimeen syöttää vain IP- osoitteen, noudattaa Apache listan ensimmäistä sivustoa, eli tiedostossani websitea.heikkima.fi.

Poistan Minioni koneestani Apachen2 ja php:n, jotta voin kokeilla apache.sls: tiedostoani kokonaan.

sudo apt-get purge -y apache2* php* libapache2-mod-php*

HUOM. Tätä komentoa ei suositella tuotannossa olevalle koneelle.

Komento poistaa kaikki ohjelmat jotka alkavat sanoilla apache2, php, ja libapache2-mod-php. Tämän jälkeen pyydän masteri koneeltani käskemään minioni koneita apache.sls tilaan.

sudo salt ”*” state.apply apache

Screen Shot 2018-04-08 at 20.14.35

Sain vastaukseksi että minion1 on saavuttanut halutun tilan, ja 9 muutosta tehty. Syötän selaimeeni websiteb.heikkima.fi ja websitea.heikkima.fi.

Screen Shot 2018-04-08 at 20.16.06.png

e)

e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.

/etc/skel – on hakemisto josta linux hakee kaikki tiedostot ja kansiot uudelle käyttäjälle. Jos /etc/skel on tyhjä ei uudelle käyttäjälle luoda mitään etukäteen kotihakemistoon.

Muokkasin taas apache.sls -tiedostoa, jonka olen luonut aikaisemmessa tehtävässä.

Screen Shot 2018-04-09 at 11.44.01.png

Lisäsin sinne yhden osion lisää, jossa lisätään tiedosto minioni koneille index.html hakemistoon /etc/skel/public_html/. Salt hakee tiedoston omasta hakemistostaan ”/srv/salt/skel/user.html”, samalla Salt luo tarvittavat kansiot mikäli näitä ei vielä ole olemassa. Salt katsoo myös että minioni koneessa on asennettu apache2 ja userdir on laitettu päälle apache2:ssa.

Nyt pitää luoda tuo tiedosto jonka Salt hakee:

$ sudo mkdir /srv/salt/skel

$ sudo nano /srv/salt/skel/user.html

Screen Shot 2018-04-09 at 11.50.20.png

Kyseessä on hyvin simppeli JavaScript-koodi, joka lukee URL-osoitteesta käyttäjätunnuksen ja tulostaa tämän sivulle.

Poistan minioni koneesta taas kaikki ohjelmat ja luon uuden käytättäjän testiä varten sitten kun Salt on tehnyt muutokset koneelle.

$ sudo apt-get purge -y apache2* php* libapache2-mod-php*

$ sudo rm -rf /var/www/

#Näitä komentoja ei suositella tuotannossa olevalle koneelle.

Ajetaan Salt tila minioniin:

$ sudo salt ”*” state.apply apache

Screen Shot 2018-04-09 at 11.58.41.png

Sain vastaukseksi että minion1 on onnistuneesti päässyt tilaan ja 10 muutosta on tehty.

Nyt lisätään uusi käyttäjä minion koneessa

$ sudo adduser tester

Kun käyttäjä on luotu ja salasana tälle annettu, voidaan katsoa selaimesta minkälaiset nettisivut tällä on.

Screen Shot 2018-04-09 at 12.03.44.png

/srv/ hakemisto rakenne näyttää seuraavanlaiselta:

Screen Shot 2018-04-10 at 10.11.26

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

w

Muodostetaan yhteyttä palveluun %s