Tein harjoituksen kotonani HP Pavilion 15-aw022no-tietokoneella, käyttöjärjestelmänä toimi 64-bittinen Ubuntu 16.04.3 livetikulta. Livetikku toteutettu Pendrivelinuxilla.
Tehtävät Tero Karvisen sivuilta.
a) Kultainen polku. Tee ensimmäinen versio modulistasi, joka toimii ainakin optimiolosuhteissa. Jos jokin säätö on poikkeuksellisen hankala, voit tehdä sen tässä versiossa käsin, ja dokumentoida ajamasi käskyt. (Valmis moduli tarvitaan vasta esitykseen ensi viikolla).
Idea jolla lähdin toteuttamaan tätä projektia oli automatisoida Saltilla ohjelmien asentaminen ja konfiguroiminen tyhjään tietokoneeseen. Asennetut ohjelmat olisi tarkoitettu ihmisille jotka luovat nettisivuja. Itse en ole web designer, enkä harrasta sivustojen tekemistä, mutta olen muutaman semmoisen tehnyt ja käytin näitä kokemuksia tässä projektissa.
Suunnittelin seuraavaa:
– Tietokone on hyvä suojata, joten aktivoidaan palomuuri ja tehdään siihen reijät portteihin 22, 80 ja 443.
– Asennetaan ja konffataan Apache2 käyttövalmiiksi.
– Asennetaan SSH etäyhteyksille.
– Asennetaan koodieditori Geany.
– Joillekkin nettisivuille tarvitaan tietokanta, joten asennetaan ja konffataan Mysql.
– Asennetaan Curl.
– Kuvankäsittelyohjelmaksi Gimp
Ajattelin aloittaa vaikeimmasta, eli Mysqllän asentaminen ja konffaaminen. Tajusin, että tämä saattaa olla liian hankala pala, kun pitää asettaa salasana tunnuksille ja niin poispäin, mutta tähdet olivat oikeassa asennossa. Tajusin, että opettajamme on juuri tästä aiheesta kirjoittanut loistavat ohjeet joilla pääsen eteenpäin.
Aloitin tyhjältä koneelta joten ajoin komennot setxkbmap fi ja sudo apt-get update && sudo apt-get install -y salt-minion. Loin tarvittavat kansiot komennolla sudo -p mkdir /srv/salt/mysql. Sinne sudoeditillä init.sls tiedosto, johon aikalailla suoraan kopsattuna, vain salasana muutettuna. Niinkuin aikasemmin sanoin koodi Tero Karvisen kotisivuilta.
Sitten kokeilin toimiiko ajamalla komennon sudo salt-call –local state.apply mysql. Näyttö vihreänä. Kokeilin kirjautua salasanalla “tosisalainensalis” onnistuneesti.
Seuraavaksi Apache. Tätä ollaan jo aikasemminkin konfiguroitu, joten on vähän tutumpaa. Aloitin tekemällä kansion /srv/salt/apache, jonne tein init.sls tiedoston. Halusin, että PHP asennetaan ja laitetaan toimimaan. Myös userdir toimiimaan. Tehtäisiin esimerkki virtualhosti, hello world sivu ja public_html kansion kotihakemistoon.
init.sls tiedostosta tuli seuraavanlainen.
Mennään järjestyksessä. Tila siis asentaa Apachen ja PHP-kirjaston. Tälle tilalle tuli muutama template. Index.html tiedosto apache kansiossa, joka kirjoittaa Apachen default-sivun päälle. Tiedosto sisältää vain “Hello World”. Seuraava mahdollistaa käyttäjän hakemiston käytön. Neljännessä templatessa viimeiset rivit on vaihdettu kommenteiksi, jotta PHPta voidaan käyttää. Sitten luodaan virtualhost ex.example.com sivustolle ja /hosts muokataan hosts tiedostoa, jotta voidaan simuloida ex.example.comia paikallisesti. Viimeiseksi templeitiksi vielä tyhjä public_html kansio kotihakemistoon. Lopuksi kaikki mitä pitää käynnistää uudelleen, jotta muokkaukset tulevat voimaan. Tila kokonaisuudessaan Github –sivultani.
Palomuuri. Tarkoituksena oli vaihtaa SSHn portti vakiosta 60001een. Loin /srv/salt/firewall kansion ja sinne init.sls tiedoston.
Tämä varmistaa, että ufw on asennettuna ja käynnistää sen. Lisää IPv4 ja IPv6 sääntöihin porteille 80, 443 ja 60001 pääsyn ja käynnistää palomuurin uudestaan, jotta muokkaukset tulee voimaan. Säännöt molempiin tiedostoihin:
Tila kokonaisuudessaan Github-sivultani
Tein työkaluille oman kansion tools ja sinne taas init.sls. Tänne laittaisin kaikki työkalut mitä ei tarvitsisi konfiguroida. Tälläisiä on esim. Gimp tai Curl. Tiedostoon on helppo lisätä ajan kuluessa ja tiedon karttuessa uusia hyviä ohjelmia.
Viimeiseksi vielä top.sls tiedosto, että voidaan kaikki ajaa kivasti yhdellä komennolla.
Kokeilin tämän ajaa komennolla sudo salt-call –local state.highstate.
Succeeded: 22. Kaikki pitäisi olla niinkuin pitisikin olla.
Kokeilen kirjautua Mysql root tunnukselle niikuin aikaisemmin, yhtä onnistuneesti kuin aikaisemminkin.
Kokeilin toimiiko ex.example.com. Siellähän se.
Public_html kansio luotu niinkuin pitikin.
Komennolla sudo ufw status tarkistin onko kaikki hyvin. Vastaus oli vakuuttava ja siinä kerrottiin, että portit 80, 443 ja 60001 ovat auki.
Komennolla ssh -p 60001 localhost tarkistin löytyykö SSH-demoni oikesta portista. Kyseli sormenjälkeä, joten on.
Gimp, Geany ja Curl löytyy ja käynnistyy niinkuin pitää.
Voisin todeta tämän onnistuneeksi moduliksi tähän mennessä. Aloitin tämän tekemisen noin kello 18.00 eilen nyt kello on 03.16 päivämääränä 11.5.2018.
Tulen ainakin automatisoimaan setxkbmap fi komennon vielä.
Hämärän peittoon jäi, että miten on mahdollista printata käyttäjän nimi. Tunti jos toinenkin meni sitä pohtiessa. Tarkoitus oli saada Jinjalla printattua virtualhostin polkuun käyttäjänimi. Eli DocumentRoot /home/xubuntu/public_html. Xubuntu olisi ollut kiva saada jotenkin muutettua käyttäjän nimen mukaan. Onneksi tajusin kokeilla tildeä joka sitten toimi… Mutta huomasin, että muutkaan ihmiset eivät ole tätä oikein keksinyt.
b) Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.
Seuraavilla komennoilla alkuun
sudo apt-get update && sudo apt-get install -y git salt-minion
git clone https://github.com/matilinux/saltmodule.git
sudo mv saltmodule/salt/ /srv/
Nyt kun kaikki on paikoillaan kokeilin ajaa komennon sudo salt-call –local state.highstate. Tämä ei onnistunut koska ei ole masteria. Aikaisemmin tämä onnistui ilman masteria. No ei siinä tehdään sekin.
sudo apt-get install -y salt-master
sudoedit /etc/salt/minion
Ja minion tiedostoon masterille osoitteeksi 127.0.0.1 ja minionille IDksi mati.
Minionin uudelleenkäynnistys komennolla sudo systemctl restart salt-minion.service.
Hyväksytään avain komennolla sudo salt-key -a mati
Kokeillaan uudestaan ajaa top.sls komennolla sudo salt ‘*’ state.highstate.
Yksi virheilmoitus tulee, joka johtuu palomuurin tilasta. Ei muka ole käynnissä (failed to restart the service). Kun tarkistaa asian komennolla sudo ufw status kaikki on kuitenkin kunnossa. Ajoin highstaten uudestaan ja nyt kaikki onnistui. Onkohan mahdollista, että jossain järjestyksessä on jotain vialla.
Kaikki läpi käytyä huomasin, ettei public_html kansiota ole tehty kotihakemistoon. Pitää korjata!
c) Käyttäjätarina (user story): ketkä ovat modulisi käyttäjät? Mitä he haluavat saada aikaan modulillasi? Missä tilanteessa he sitä käyttävät? Mitkä ovat tärkeimmät parannukset käyttäjän kannalta, joita moduliin pitäisi vielä tehdä?
Halusin tehdä nopeasti tyhjästä asennettavan koneen, jollai olisi mahdollista tehdä websivuja. Käyttäjinä olisi siis websivujen tekijät. Halusin mahdollistaa graafisilla ohjelmilla työskentelyn ja myös nopean cli ohjlman, joilla olisi mukava tehdä töitä. Etäyhteydet on usein erittäin hyödyllisiä. Myös hieman turvallisuutta konffaamalla ja pystyttämällä palomuuri. Parannuksina olisi monipuolisempi ohjelmatarjonta.
Lähteet:
http://terokarvinen.com/2015/preseed-mysql-server-password-with-salt-stack
http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html