Toinen tehtävä

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.

 

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

Tehtävänannon mukaisesti tein tehtävän ensin manuaalisesti. Koska tämä tehtävä on tehty jo aiemmin aikaisemmalla kurssilla, linkkaan tähän kuinka se tehdään: https://johanneslaatu.wordpress.com/2018/02/05/kolmas-viikko-kolmas-tehtava/.

apachesalt

Testasin, että manuaalisesti tekemäni muutokset varmasti toimivat. Kuten näkyy, hienosti toimii! Seuraavaksi automatisaation kimppuun.

Aloitin luomalla SALT-kansioon uuden kansion (pitääkseni tulevat skriptit paremmassa järjestyksessä) nimeltään Apache.

Kansion sisälle tein “default-index.html” -tekstitiedoston. Tiedoston sisälle kirjoitin kuvassa näkyvän tekstin “Johanneksen testisivut“.

Seuraavaksi loin kansion sisälle toisen tiedoston, init.sls. Tämän sisälle kirjoitin seuraavan skritpin:

apache.sls

Ensimmäisessä rivissä määritellään, että paketti apache2 tulee asentaa. Toisella rivillä määritetään haluttu kohde, eli tässä tapauksessa tuo kirjoittamani tekstipätkä, joka sittemmin tulostuu localhostiin. Olen kopioniut tämän skriptin Tero Karvisen materiaaleista: http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example.

Minulla oli vaikeuksia saada aluksi tuo init.sls toimimaan. Mietin kauan ja hartaasti mikä on pielessä, mutta lopulta vika oli puolipisteissä, jotka joko puuttuivat tai olivat väärissä paikoissa, ja siinä, että init.sls oli saltin alikansiossa “Apachessa”. Vika korjaantui, kun siirsin tiedoston suoraan SALT-kansioon ja ajoin sen uudestaan.

apachesalt2

Testattu että toimii. Skriptissä oli viisi kohtaa jotka on nyt kaikki ajettu.

 

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

Jälleen ensin manuaalinen testaus:

sudo apt-get install libapache2-mod-php

sudoedit /etc/apache2/mods-available/php7.0.conf

tuolta conf-tiedostosta kommentoidaan viisi alimmaista riviä. Tästäkin on tarkemmin ylläolevassa linkissä aiemmasta postauksestani.

sudo service apache2 restart

Nyt PHP:n pitäisi toimia. Testataan:

phpmanualtest

Kirjoitin siis yksinkertaisen php-skriptin:

<!DOCTYPE html>
<html>
<body>
<?php echo “tämä on testi”;?>
</body>
</html>

 

public_html kansioon nimellä testi.php. Hyvin toimii! Seuraavaksi automatisaatioon.

Automatisointi

Jälleen kerran loin salt-kansioon alikansion “php“. Tämän sisään tein tiedostot “php.conf” ja “php.sls“.

Conf -tiedoston sisään copypastesin tiedot /etc/apache2/mods-available/php7.0.conftiedostosta, jossa olin siis jo kommentoinut viisi alinta riviä pois käytöstä.

Sls -tiedosto on seuraavanlainen:

php.sls

Kun kokeillaan ajaa:

php-success

Kauniin vihreää ja sinistä, juuri mitä haettiinkin.

 

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

Mennään ensin /etc/apache2/sites-available ja luodaan tänne vaikka example.com -tiedosto.

<VirtualHost *:80>
ServerName http://www.testi.example.com
ServerAlias testi.example.com
DocumentRoot /home/johannes/public_html/sleep.com
<Directory /home/johannes/public_html/sleep.com>
Require all granted
</Directory>
</VirtualHost>

Tämän jälkeen pitää vielä muokata etc/hosts -tiedostoa:

etc-hosts

Oleellista on 127.0.1.1 osoitteelliset tiedot. Kommentoin ulos aiemmin sillä osoitteella olleen Laptopin varmuuden vuoksi. Ctrl + x ja y:llä ulos. Sitten testataan toimivuutta:

example.com

Testisivut toimii! En ole narsisti, nimi on tuossa sen takia, että näitä “testisivuja” on jo sen verran monta, että koetan yksilöidä tekstin tapauskohtaisesti tietääkseni että se varmasti toimii. Enihuu, sitten automatisaatio:

Automatisointi:

Tein SALT-kansioon alikansion “hosts“. Sinne tehtiin jälleen sls -tiedosto ja tällä kertaa kaksi .conf -tiedostoa.

hosts.conf -tiedosto sisältää jo aiemmin linkittämäni tekstin:

<VirtualHost *:80>
ServerName http://www.testi.example.com
ServerAlias testi.example.com
DocumentRoot /home/johannes/public_html/sleep.com
<Directory /home/johannes/public_html/sleep.com>
Require all granted
</Directory>
</VirtualHost>

etchosts.conf -tiedostosta löytyy tuo aiemmin manuaalisesti lisäämämme virtual host-tiedosto:

127.0.0.1 localhost
#127.0.1.1 Laptop
127.0.1.1 http://www.testi.example.com
127.0.1.1 testi.example.com

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

hosts.sls -tiedosto viimeisenä sinetöimään tämä tehtävä:

deploy apache2 sites available hosts file:
file.managed:
– name: /etc/apache2/sites-available/example.com
– source: salt://hosts/hosts.conf

etc hosts file edit:
file.managed:
– name: /etc/hosts
– source: salt://hosts/etchosts.conf

Ajoin komennon läpi:

sudo salt ‘*’ state.apply hosts

ja tuloksena vihreää ja sinistä. Nais!

 

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.

Aloitin luomalla index.html tiedoston salt-kansioon. Sinne kirjoitin vain: “Tämä on uuden käyttäjän esimerkkikotisivu!

Tämän jälkeen tein indexhtml.sls -tiedoston, jonne kirjoitin seuraavaa:

indexhtml

Tämä siis luo orjalle public_html -kansion etc/skel:iin, sekä kopion tuosta tekemästäni index.html -tiedostosta.

Ajoin komennon:

sudo salt ‘*’ state.apply indexhtml

Aluksi tuli virheilmoitus, joka johtui kirjoitusvirheistä, sekä siitä, että en ollut lisännyt sudoa mkdir -komentoon. Uusien ajojen myötä saan punaisena “failed” viestin, sillä tuo tiedosto on jo kertaalleen luotu, eikä sitä saa luotua uudestaan. En jaksa enää tässä vaiheessa keksiä tähän ratkaisua, sillä tehtäviin on nyt jo kulunut tuntitolkulla aikaa.

Testataan toimiko:

Loin uuden käyttäjän “johannestesti” ja luomisen jälkeen on aika testata nettiselaimella, onnistuiko skripti.

johannestesti

Ihmeiden aika ei ole ohi! Se toimii. En jaksanut tehdä mitään kunnollista “DOCTYPE html” -viritelmää, koska tämäkin ajaa asiansa näin testimielessä. Ymmärtääkseni tämä oli tehtävän tarkoitus ja näyttää toimivan.

 

Tehtävänannot osoitteesta:

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#comment-23814

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s