Oma moduulini

Tämä sisältää linkin lopputyöhöni Palvelinten hallinta kurssille.

Moduuli sijaitsee Github-sivuillani.

Moduulini asentaa minulle tarpeellisia ohjelmia, kuten Vlc, Blender ja Shutter. Näiden lisäksi se asentaa Apachen ja siihen tarvittavan PHP-kirjaston, sekä SSH:n ja muokkaa sen oletusportin toiseksi.

Mainokset

Palvelin hallinta viikko 4 harjoitus 4 – Pilarit

Tämän viikon harjoitus löytyy Tero Karvisen Palvelin hallinnan sivuilta.

Harjoituksessa käyttämäni kone on MSI:n GX 640 (64-bit) kannettava tietokone ja koneeseen on asennettu käyttöjärjestelmäksi Linux Xubuntu 16.04.3 LTS (64-bit).

Voit saada oman Xubuntu 16.04.3 LTS (64-bit) versiosi täältä.

Aloitan harjoituksen tekemisen maanantaina 23.4.2018 klo 9.30

Aluksi loin kaksi minionia vagrantilla käyttämällä Teron ohjetta. Tämän jälkeen luodaan master ja minion hallintasuhde. Ohjeet tämän tekemiseen löydät Kristian Syrjäsen sivuilta, joita myös itse käytin. Sen jälkeen jatkamme ajamalla pakettien päivityksen livetikulla varustetussa kannettavassa tietokoneessa, joka toimii masterina, ja kahdessa vagrantilla luodulla minionilla seuraavalla komennolla.

$ sudo apt-get update

b) Tee kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummalekin orjalle mene eri tieto. Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

klo 9.40

Tehdään tämä tehtävä luomalla tekstitiedosto, jonne eri minionit saavat eri muuttujan. Aloitetaan luomalla ensin pillar-kansio ja sinne top.sls tiedosto seuraavilla komennoilla.

$ sudo mkdir /srv/pillar

$ cd /srv/pillar/

$ sudoedit top.sls

top1_sls

Kuten kuvasta näkyy, vagrantilla luomani minionit ovat slave1 ja slave2. Ne saavat annetun arvon, jos niiden muuttuja löytyy myös samasta kansiosta, jonne top.sls luotiin. Tämä tapahtuu seuraavilla komennoilla.

$ sudoedit test1.sls

$ sudoedit test2.sls

Seuraavissa kuvissa näkyy sisältö, jonka määrittelin kummallekin minionille.

test1_sls

test2_sls

Tämän jälkeen siirrymme luomaan salt-kansion, jonka alle luomme pillartest-kansion, jonne luomme init.sls tiedoston. Tämä onnistuu seuraavilla komennoilla.

$ sudo mkdir /srv/salt

$ sudo mkdir /srv/salt/pillartest

$ cd /srv/salt/pillartest

$ sudoedit init.sls

init1_sls

Tämä tiedosto luo minionin tmp-kansioon test.txt tiedoston, joka käyttää pohjana masterilla pillartest-kansiossa olevaa test.txt tiedostoa. Seuraavaksi luomme tuon init.sls tiedostossa pohjaksi määrittelemämme test.txt tiedoston. Tämä onnistuu seuraavalla komennolla.

$ sudoedit test.txt

test_txt

Luodaan vielä lopuksi salt-kansioon top.sls tiedosto.

$ sudoedit /srv/salt/top.sls

top2_sls

Tämän jälkeen voimme siirtyä testaamaan toimivatko pillarit, ajamaan highstate ja lopulta tulostamme cat-komennolla kummankin minionin tmp-kansiossa olevat test.txt. Tämä kaikki toteutetaan seuraavilla komennoilla.

$ sudo salt ’*’ pillar.items

$ sudo salt ‘*’ state.highstate

$ sudo salt ‘*’ cmd.run ‘cat /tmp/test.txt’

pillar

ajo1

testi1

Kuten kuvat osoittavat, tehtävämme onnistui. Voimme siis siirtyä seuraavaan kohtaan.

c) Tee kahdella orjalla esimerkki, jossa toinen orja saa muuttujan pilarista ja toinen käyttää oletusarvoa (pillar.get). Tee jokin muu kuin tunnilla tehty sshd-esimerkki.

klo 10.15

Voimme yrittää tehdä tämän tehtävän helposti muokkaamalla aiemmin luomamme pillartest-kansion init.sls tiedostoa.

$ sudoedit /srv/salt/pillartest/init.sls

init2_sls

Vaihdoimme siis tuon aiemmin käyttämämme {{ pillar[’test’] }} muotoon {{ pillar.get(’test’ , ’Testi’) }}. Eli jos test-muuttujalle määriteltyä sisältöä ei löydy, sille annetaan oletusarvo Testi. Tämän jälkeen poistamme pillar-kansiosta tuon test2.sls tiedoston jotta näemme, toimiiko tuo muutettu init.sls. Seuraavaksi voimme siirtyä testaamaan toimivatko pillarit, ajamaan highstate ja lopulta tulostamme cat-komennolla kummankin minionin tmp-kansiossa olevat test.txt. Tämä kaikki toteutetaan seuraavilla komennoilla.

$ sudo salt ‘*’ state.highstate

$ sudo salt ‘*’ cmd.run ‘cat /tmp/test.txt’

ajo2

testi2

Muutos näytti onnistuneen. Tehtävä on siis valmis. Lopetan harjoituksen maanantaina 23.4.2018 klo 10.40. Harjoituksen tekemiseen meni noin 1 tunti ja 10 minuuttia.

Lähteet:

Tero Karvisen nettisivut: http://terokarvinen.com/2018/aikataulu-–-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p

Tero Karvisen Vagrant ohje: http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine

Kristian Syrjäsen ohjeet Saltin asentamiseen: https://ksyrjanen.me/2018/04/01/palvelinten-hallinta-harjoitus-1/

Palvelin hallinta viikko 3 harjoitus 3 – Salt ja Jinja.

Tämän viikon harjoitus löytyy Tero Karvisen Palvelin hallinnan sivuilta.

Harjoituksessa käyttämäni kone on MSI:n GX 640 (64-bit) kannettava tietokone ja koneeseen on asennettu käyttöjärjestelmäksi Linux Xubuntu 16.04.3 LTS (64-bit). Lisäksi käytän harjoituksessani DigitalOceanin VPS: ää (1GB RAM, 25GB SSD, Ubuntu 16.04.4 x64) ja aiemmalla kurssilla luomaani 16.04.3 amd64-livetikkua.

Voit saada oman Xubuntu 16.04.3 LTS (64-bit) versiosi täältä.

Aloitan harjoituksen tekemisen maanantaina 16.4.2018 klo 1.45

Aloitetaan tilanteesta, jossa master ja minion hallintasuhde on jo tehty. Ohjeet tämän tekemiseen löydät Kristian Syrjäsen sivuilta, joita myös itse käytin. Sen jälkeen jatkamme ajamalla pakettien päivityksen livetikulla varustetussa kannettavassa tietokoneessa ja VPS:ssä seuraavalla komennolla.

$ sudo apt-get update

b) Tiedosto muotista: tee yksinkertainen SLS-tilatiedosto, joka laittaa muuttujan tiedostoon. Käytä jinjan kontekstimuuttujaa (template: jinja, context: …).

klo 2.10

Aloitin luomalla masterilla jinjatesti1-kansion /srv/salt-kansion alle ja sen jälkeen loin tilatiedoston jinja.sls tuonne kansioon seuraavilla komennoilla.

$ sudo mkdir /srv/salt/jinjatesti1

$ sudoedit /srv/salt/jinjatesti1/init.sls

Tämän jälkeen kirjoitin init.sls tiedoston sisälle seuraavan sisällön. Lainaan tarvittavat rivit Tero Karvisen ohjeesta, kuitenkin muokaten sitä hieman.

init1_sls

Tiedosto luo siis tekstitiedoston jinjatest.txt /tmp-kansioon, joka käyttää pohjana jinjatesti1-kansiossa olevaa testi.txt tiedostoa ja syöttää sen muuttuja kenttään          {{ file }}. Tämän jälkeen loin vielä jinjatesti1-kansioon testi.txt tiedoston seuraavalla komennolla.

$ sudoedit /srv/salt/jinjatesti1/testi.txt

Johon tuo init.sls viittaa ja kirjoitin sinne seuraavan sisällön.

testi1_txt

Tämän jälkeen voimmekin kokeilla ajaa tuon tilan. Tämä onnistuu seuraavalla komennolla.

$ sudo salt ’*’ state.apply jinjatesti1

kuva_ajo1

Testataan samalla vielä minionilla cat-komennolla, onnistuiko tilan ajo ja kuten edellisessä kuvassa näkyy, niin onnistuihan se.

c) SLS tilaa Jinjalla: tee yksinkertainen SLS-tilatiedosto, joka käyttää for-in -silmukaa. Voit esimerkiksi tehdä kolme tiedostoa silmukalla. (Tässä tehtävässä siis käytetään jinjaa vain SLS-tiedoston sisällä, älä sotke samaan esimerkkiin tekstitiedostojen sisällön muuttamista.)

klo 3.05

Tässä kohdassa tehdään periaatteessa sama homma kuin aiemmassa kohdassa, luodaan mutta useampi tiedosto yhtä aikaa. Aloitetaan taas luomalla masterilla jinjatesti2-kansion /srv/salt-kansion alle ja sen jälkeen loin tilatiedoston init.sls tuonne kansioon seuraavilla komennoilla.

$ sudo mkdir /srv/salt/jinjatesti2

$ sudoedit /srv/salt/jinjatesti2/init.sls

Tämän jälkeen kirjoitin init.sls tiedoston sisälle seuraavan sisällön. Lainaan tarvittavat rivit Tero Karvisen ohjeesta for-in koodille, kuitenkin muokaten sitä hieman.

init2_sls

Tiedosto luo siis tekstitiedostot jinja1, jinja2 ja jinja3 /tmp-kansioon, joka käyttää pohjana jinjatesti2-kansiossa olevaa testi.txt tiedostoa ja syöttää sen muuttuja kenttään {{ file }} tekstin Jinja1, Jinja2 tai Jinja3. Tämän jälkeen loin vielä jinjatesti2-kansioon testi.txt tiedoston seuraavalla komennolla.

$ sudoedit /srv/salt/jinjatesti2/testi.txt

Johon tuo init.sls viittaa ja kirjoitin sinne seuraavan sisällön.

testi2_txt

Tämän jälkeen voimmekin kokeilla ajaa tuon tilan. Tämä onnistuu seuraavalla komennolla.

$ sudo salt ’*’ state.apply jinjatesti2

kuva_ajo2

Testataan samalla vielä minionilla cat-komennolla, onnistuiko tilan ajo ja kuten edellisessä kuvassa näkyy, niin onnistuihan se.

d) SSH-demonin portti: tee tila, joka asentaa SSH-demonin valittuun porttiin. Käytä portin valintaan Jinjaa, siten että sshd_config:issa “Port:”-kohdan arvo tulee Jinjan muuttujasta.

klo 3.20

Tehdään tämä ensin käsin, jonka jälkeen pääsemme automatisoimaan sen käyttäen Saltia ja Jinjaa. Aloitetaan ensin asentamalla SSH minionille seuraavalla komennolla.

$ sudo apt-get -y install ssh

Tämän jälkeen kokeilen SSH yhteyttä seuraavalla komennolla.

$ ssh xubuntu@localhost

ssh_testi1

Kuten kuvasta näkyy, SSH testi onnistui. Tämän jälkeen pääsemmekin muuttamaan porttia. Asetustiedosto portin muuttamiseen löytyy polun /etc/ssh/ takaa ja tämä tiedosto on nimeltään sshd_config. Pääsemme muokkaamaan tätä tiedostoa seuraavalla komennolla.

$ sudoedit /etc/ssh/sshd_config

sshd1

Vaihdetaan tuo Port 22 kohta vaikka esimerkiksi Port 8888. Tämän jälkeen voimmekin tallentaa muutokset ja poistua. Seuraavaksi meidän tarvitsee käynnistää SSH uudelleen. Tämä onnistuu seuraavalla komennolla.

$ sudo systemctl restart ssh.service

Alkuperäisesti tuo portti oli siis 22 ja muutoksen jälkeen 8888. Testataan ensin, toimiiko vanha portti vielä ja sen jälkeen testataan uutta porttia. Porttikohtaisesti SSH-yhteyden testaaminen onnistuu seuraavalla komennolla.

$ ssh -p 22 xubuntu@localhost

ssh_testi2

Kuten kuvasta näkyy SSH yhteyden luominen ei onnistunut käyttämällä vanhaa porttia, kokeillaan siis uutta porttia seuraavalla komennolla.

$ ssh -p 8888 xubuntu@localhost

ssh_testi3

Kuvasta näkyy, että portin muutos oli onnistunut, koska SSH-yhteyden luominen uudella portilla onnistui. Voimme siis siirtyä tämän toiminnon automatisointiin. Ensin kopioidaan tuo muokattu sshd_config asetustiedosto masterille ja sen jälkeen voimme poistaa SSH minionilta. Tämä onnistuu seuraavilla komennoilla.

$ sudo scp /etc/ssh/sshd_config käyttäjä@ip-osoite:

$ sudo apt-get purge -y ssh

Tämän jälkeen voimme luoda masterilla /srv/salt kansioon ssh kansion ja siirtää tuon aiemmin kopioimamme sshd_config asetustiedoston sinne seuraavilla komennoilla

$ sudo mkdir /srv/salt/ssh/

$ sudo mv sshd_config /srv/salt/ssh/sshd_config

Seuraavaksi muokkaamme tuota asetustiedostoa hieman seuraavalla komennolla.

$ sudoedit /srv/salt/ssh/sshd_config

sshd2

Lisäsimme sinne tuon porttinumeron tilalle {{ file }} muuttujan ja siistimme pois kommentit, jonka jälkeen tallennamme muutokset ja poistumme. Seuraavaksi luomme tuonne SSH kansioon init.sls tiedoston seuraavalla komennolla seuraavalla komennolla.

$ sudoedit /srv/salt/ssh/init.sls

init3_sls

Kun olemme saaneet init.sls sisällön valmiiksi tallennamme sen ja poistumme, jonka jälkeen voimme ajaa tuon tilan seuraavalla komennolla.

$ sudo salt ’*’ state.apply ssh

kuva_ajo3

Testasin vielä minionilla, toimiiko SSH portilla 8888 ja toimiihan se. Olemme siis muokanneet sshd_config asetustiedoston porttia Saltilla Jinjaa käyttämällä ja saaneet sen toimimaan.

e) Kokeile jonkun toisen opiskelijan tekemää Salt-tilaa. Kokeiltava tila voi olla mistä vain harjoituksesta. Opiskelijoiden raportteja ja koodeja löydät tämän sivun perästä kommenteista.

klo 3.50

Päätin käyttää tässä kohdassa Kristian Syrjäsen Palvelinten hallinnan harjoitus 1 luomaa tilaa. Aloitin luomalla masterilla kansioon /srv/salt/ top.sls tiedoston seuraavalla komennolla.

$ sudoedit /srv/salt/top.sls

top_sls

Lainasin rivit suoraan Kristianilta. Tallensin tiedoston ja poistuin. Tämän jälkeen loin editing.sls tiedoston seuraavalla komennolla.

$ sudoedit /srv/salt/editing.sls

editing_sls

Seuraavaksi loin coding.sls komennolla.

$ sudoedit /srv/salt/coding.sls

coding_sls

Seuraavaksi loin office.sls komennolla.

$ sudoedit /srv/salt/office.sls

office_sls

Ja viimeiseksi loin media.sls komennolla.

$ sudoedit /srv/salt/media.sls

media_sls

Kun sain tehtyä kaikki .sls tiedostot käynnistän masterin uudelleen seuraavalla komennolla.

$ sudo systemctl restart salt-master.service

Jonka jälkeen voin ajaa tilan komennolla.

$ sudo salt ’*’ state.highstate

kuva_ajo4

Tilan ajo onnistui, jonka jälkeen tarkastin minioniltani, onko kaikki ohjelmat asennettu ja käytettäväksi.

ohjelmat1

ohjelmat2

Kaikki toimii niin kuin pitääkin. Lopetan harjoituksen maanantaina 16.4.2018 klo 4.15. Harjoituksen tekemiseen meni noin 2 tuntia ja 30 minuuttia.

Lähteet:

Tero Karvisen nettisivut: http://terokarvinen.com/2018/aikataulu-–-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p

Kristian Syrjäsen ohjeet Saltin asentamiseen: https://ksyrjanen.me/2018/04/01/palvelinten-hallinta-harjoitus-1/

Kristian Syrjäsen Salt-tila: https://ksyrjanen.me/2018/04/01/palvelinten-hallinta-harjoitus-1/

Palvelin hallinta viikko 2 harjoitus 2 – Käyttäjien ja heidän kotisivujen lisääminen käyttäen Saltia.

Tämän viikon harjoitus löytyy Tero Karvisen Palvelin hallinnan sivuilta.

Harjoituksessa käyttämäni kone on MSI:n GX 640 (64-bit) kannettava tietokone ja koneeseen on asennettu käyttöjärjestelmäksi Linux Xubuntu 16.04.3 LTS (64-bit). Lisäksi käytän harjoituksessani DigitalOceanin  VPS:ää (1GB RAM, 25GB SSD, Ubuntu 16.04.3 x64) ja aiemmalla kurssilla luomaani 16.04.3 amd64-livetikkua.

Voit saada oman Xubuntu 16.04.3 LTS (64-bit) versiosi seuraavasta linkistä.

Aloitan harjoituksen tekemisen sunnuntaina 8.4.2018 klo 15.00.

Tämän viikon harjoitukset tulee ensin asentaa käsin ja testata niiden toiminta sen jälkeen ennen kuin toteutamme ne tekemällä Saltiin tila. Toteutettavat harjoitukset ovat seuraavanlaisia.

  1. Laita käyttäjien kotisivut toimimaan Apachella.
  2. Laita PHP toimimaan käyttäjien kotisivuilla.
  3. Tee Apachelle uusi nimipohjainen virtuaalipalvelin (name based virtual hosting). Tätä voidaan simuloida hosts-tiedoston avulla.
  4. Toteuta käyttäjien esimerkkikotisivu uusille käyttäjille siten, että se tulee automaattisesti käyttöön luodessasi uuden käyttäjän. Tämä onnistuu lisäämällä esimerkkisivun /etc/skel/:iin.

Ensin toteutan edellä mainitut harjoitukset kannettavalla tietokoneella livetikun avulla ja kun olen testannut niiden toiminnan, käynnistän koneen uudelleen ja aloitan niiden automatisoinnin.

klo. 15.10

Aloitetaan avaamalla terminaali ja päivittämällä paketit seuraavalla komennolla.

$ sudo apt-get update

Aloitetaan ensimmäiseksi luomalla koneen /etc/skel/:iin kansio ja oletussivu käyttäjiä varten. Tämä onnistuu seuraavilla komennoilla.

$ sudo mkdir /etc/skel/public_html

$ cd /etc/skel/public_html

$ sudoedit index.php

kuva_html

Kirjoitin html-tiedostoon lyhyesti ”Hello World!” ja koska harjoituksessa on myös PHP kohta, lisäsin sinne myös PHP:tä testaamista varten, tallensin ja poistuin. Tämän jälkeen voimme siirtyä seuraavaan kohtaan, eli käyttäjän luomiseen, jotta voimme heti testata kotikansiota, kun mahdollista. Käyttäjä lisätään seuraavalla komennolla.

$ sudo adduser testi

Kun luomme käyttäjiä, joudumme lisäämään heille salasanan ja nimen. Luon aina kaikille vahvan salasanan, joka on ainakin 8 merkkiä pitkä ja sisältää isoja sekä pieniä kirjaimia, numeroita ja symboleja.

Sitten voimme siirtyä Apachen asennukseen. Syötämme terminaalin komentoriville seuraavan komennon.

$ sudo apt-get install -y apache2

Asennuksen jälkeen testaamme, onko Apache asennettu käyttämällä seuraavaa komentoa.

$ firefox ”http://localhost/”

Jos selaimeen avautuu seuraava näkymä, Apachen asennus on onnistunut.

kuva_selain

Voimme muokata oletussivun näyttämään vaikka testisivua tämän testin ajan. Se onnistuu seuraavalla komennolla.

$ sudoedit /var/www/html/index.html

Poistettuamme kaiken alkuperäisen tekstin voimme korvata sen esimerkiksi ”Hello World!” tekstillä.

kuva_index

Tallennamme tiedoston ja poistumme. Tämän jälkeen meidän tulee sallia kotihakemiston luominen koneella. Tämä onnistuu seuraavalla komennolla.

$ sudo a2enmod userdir

Jotta tämä muutos tulee voimaan, meidän tulee käynnistää Apache-palvelin uudestaan seuraavalla komennolla.

 $ sudo systemctl restart apache2.service

Seuraavaksi laitamme PHP:n toimimaan käyttäjien kotisivulla. Tätä varten meidän tarvitsee asentaa php-kirjasto Apache-palvelimelle. Tämä onnistuu seuraavalla komennolla.

$ sudo apt-get install -y libapache2-mod-php

Asennuksen jälkeen muokkaamme juuri lisätyn kirjaston php-asetustiedostoa, jotta saamme PHP:n käyttöön myös käyttäjien kotikansioissa. Päästäksemme muokkaamaan asetustiedostoa, käytämme seuraavaa komentoa.

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

kuva_conf

Maalaamani IFModule täytyy kommentoida pois käytöstä käyttäen #-kommenttimerkkiä, jonka jälkeen tallennamme ja poistumme tiedostosta. Tämän jälkeen meidän tarvitsee käynnistää Apache-palvelin uudelleen, jotta muutokset tulevat voimaan. Se onnistuu seuraavalla komennolla.

$ sudo systemctl restart apache2.service

Tämän jälkeen voimme testata toimiiko käyttäjä, käyttäjän kotihakemisto ja -sivu ja PHP. Testaaminen onnistuu seuraavalla komennolla.

$ firefox ”http://localhost/~testi”

Onnistunut testi pitäisi tuoda selaimeen seuraavanlaisen näkymän.

kuva_selain1

Seuraavaksi laitamme nimipohjaisen virtuaalipalvelimen toimintaan. Käytämme tässä example.com-domainia, koska tämä on testitilanne. Aloitamme kopioimalla pohjan virtuaalista nimipalvelinta varten, jonka jälkeen muokkaamme sitä. Tämä onnistuu seuraavilla komennoilla.

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/syltty-example-com.conf

$ sudoedit /etc/apache2/sites-available/syltty-example-com.conf

Muokkaamme tiedoston seuraavanlaiseksi.

kuva_conf2

Tämän jälkeen otamme muokkaamamme confin käyttöön seuraavilla komennoilla.

$ sudo a2ensite syltty-example-com.conf

$ sudo systemctl restart apache2.service

Seuraavaksi muokkaamme hosts-tiedostoa seuraavalla komennolla.

$ sudoedit /etc/hosts

kuva_hosts

Lisäsimme sinne tuon example.com sivun ja siihen eteen koneeni IP-osoitteen. En kuitenkaan näytä tässä oman koneeni IP-osoitetta. Tämän jälkeen voimme testata nimipohjaisen virtuaalipalvelimen toimintaa seuraavalla komennolla.

$ firefox ”syltty.example.com”

Jos edellä oleva näkymä avautuu selaimeen, on nimipohjaisen virtuaalipalvelimen luonti onnistunut.

kuva_selain2

Laita käyttäjien kotisivut toimimaan Apachella. (H2 kohta b)

klo. 17.00

Nyt voimme aloittaa Salt tilan automatisoinnin. Käynnistän siis kannettavan tietokoneen uudelleen livetikulla ja otan SSH-yhteyden VPS: n. Jos et ole jo määritellyt VPS Salt Masteriksi, voit käyttää samaa Kristian Syrjäsen ohjetta mitä itse käytin.

Testasin yhteyden toiminnan seuraavalla komennolla.

$ sudo salt ’*’ test.ping

kuva_ping

Kuvasta voisimme päätellä, että yhteys toimii. Tavoitteenamme on siis saada käyttäjien kotisivut toiminaan Apachella. Aloitin ensin luomalla master-koneeseen tarvittavat kansiot ja sen jälkeen loin tiedoston tilalle, jota lähdin muokkaamaan. Tämä onnistuu seuraavilla komennoilla.

$ sudo mkdir /srv/salt

$ sudoedit /srv/salt/apache.sls

Loin Masterilleni tilan nimeltä apache.sls, joka asentaa Apache2:n, vaihtaa oletussivun alkuperäisestä muokattuun, joka sijaitsee Saltin kansiossa apache2, sallii käyttäjille omat kotikansiot ja -sivut, ja käynnistää lopulta Apache2:n uudelleen.

apache_sls

Kun ajoin apache.sls tilan, suoritin sen komennolla.

$ sudo salt ’*’ state.apply apache

apache_ajo

Tilan ajo oli onnistunut. Suoritin vielä minionilla testin ja syötin komennon.

$ firefox ”http://localhost/”

selain4

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

Jotta saisimme PHP:n toimimaan käyttäjien kotisivuilla, meidän tarvitsee asentaa libapache2-mod-php koneelle. Tämän jälkeen muokkaamme seuraavaa tiedostoa ”/etc/apache2/mods-available/php7.0.conf”. VPS:ni oli jo aiemmin asennettu ja muokattu kyseinen tiedosto, joten kopioin sen suoraan saltin kansioon seuraavalla komennolla.

$ sudo cp /etc/apache2/mods-available/php7.0.conf /srv/salt/apache2

Seuraavaksi loin Masterilleni tilan nimellä php.sls, joka asentaa libapache2-mod-php:n, korvaa alkuperäisen php7.0.conf-tiedoston muokatulla tiedostolla ja lopulta käynnistää Apache2:n uudelleen.

php_sls

Kun ajoin php.sls tilan, suoritin sen komennolla.

$ sudo salt ’*’ state.apply php

php_ajo

Tilan ajo oli onnistunut. Loin nopeasti uuden PHP-tiedoston minionin käyttäjälle, jolla testasin nopeasti toiminnan. Avasin sen selaimessa komennolla.

$ firefox ”http://firefox/~xubuntu”

selain5

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

Jotta saisimme virtuaalisen nimipalvelimen toimimaan, meidän tarvitsee muokata kahden tiedoston konfigurointia (/etc/hosts ja /etc/apache/sites-available/000-default.conf). Loin uuden kansion nimeltä /srv/salt/virhost ja kopioin nämä edellämainitut tiedostot sinne seuraavilla komennoilla.

$ sudo mkdir /srv/salt/virhost

$ sudo cp /etc/hosts /srv/salt/virhost/syltty.conf

$ sudo cp /etc/apache2/sites-available/000-default.conf /srv/salt/virhost/hosts

Muokkasin hosts ja syltty.conf sisällön seuraavanlaiseksi.

syltty_conf

hosts

Sen jälkeen loin virhost.sls tiedoston Masterille, joka ensin korvaa hosts tiedoston muokatulla versiolla, ja kopioi sites-available hakemistoon syltty.conf tiedoston ja lopuksi käynnistää Apache2-palvelimen uudelleen.

virhost_sls.png

Kun ajoin virhost.sls tilan suoritin sen komennolla.

$ sudo salt ’*’ state.apply virhost

virhost_ajo

Tilan ajo oli onnistunut. Testasin vielä minionilla nopeasti virtuaalisen nimipalvelimen toiminnan seuraavalla komennolla.

$ firefox “http://syltty.example.com/”

selain6

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. (H2 kohta e)

Tässä on tarkoituksena luoda tila, joka luo kansion public_html ja sinne tiedoston index.html hakemistoon /etc/skel/. Aloitetaan luomalla skel.sls tiedosto.

skel_sls

Kun ajoin skel.sls tilan suoritin sen komennolla.

$ sudo salt ’*’ state.apply skel

skel_ajo

Tilan ajo oli onnistunut. Testasin vielä nopeasti luomalla uuden käyttäjän, kuten aiemmin ja tulostin ruudulle kuvan, jossa näkyy käyttäjä, polku ja siellä oleva index.html tiedosto.

kuva_terminaalista

Lopetan harjoituksen tekemisen sunnuntaina 8.4.2018 klo 22.35

Päivitetty 15.4.2018 klo 12.45

Unohdin harjoituksen päätteeksi tehdä vielä top.sls tilan, jonka voisi ajaa highstaten kautta. Luotuani top.sls tiedoston se näytti tältä.

top_sls

Luotuani tilan ajoin sen seuraavalla komennolla.

$ sudo salt ’*’ state.highstate

Tilan ajo ei onnistunut, koska useammassa sls-tiedostossa oli saman nimisiä tiloja. Löysin virhost.sls tiedostosta kohdan, joka vaikutti tähän joten poistin siitä muutaman rivin ja muokkasin sitä seuraavan näköiseksi.

uusi_virhost_sls

Tämän jälkeen ajoin tilan uudestaan seuraavalla komennolla.

$ sudo salt ’*’ state.highstate

top_ajo

Tilan ajo onnistui. Tätä ei kuitenkaan tarvitse lähteä testaamaan, koska jokainen tila on jo aiemmin erikseen testattu.

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.

Päätin tehdä tilan, joka asentaa sysstatin, tekee tarvittavat asetukset ja laittaa sen toimintaan. Tehdään kuitenkin ensin tämä käsin.

Aloitetaan asentamalla sysstat seuraavalla komennolla.

$ sudo apt-get -y install sysstat

Tämän jälkeen muokataan sysstatin asetuksista kohta Enabled false -> true seuraavalla komennolla.

@ sudoedit /etc/default/sysstat

Tämän jälkeen voimme käynnistää sysstatin seuraavalla komennolla.

$ sudo systemctl start sysstat

Nyt voimme automatisoida sysstatin asennuksen saltilla. Kopioidaan aluksi sysstatin asetustiedosto minionilta masterille seuraavalla komennolla.

$ sudo scp /etc/default/sysstat käyttäjä@ip-osoite:

Tämän jälkeen voidaan poistaa minionilta käsin sysstat seuraavalla komennolla.

$ sudo apt-get purge -y sysstat

Tämän jälkeen voimme siirtyä masterille ja siirtää asetustiedoston oikeaan kansioon, jonka jälkeen voimme luoda tilan sysstat.sls seuraavilla komennoilla.

$ sudo mv /home/ville/sysstat /srv/salt

$ sudoedit /srv/salt/sysstat.sls

Tämä tila asentaa sysstatin, vaihtaa minionin sysstat asetustiedoston masterilta löytyvään muokattuun asetustiedostoon ja asettaa ohjelman seurantatilaan.

sysstat_sls

Tallennettuamme sysstat.sls tiedoston voimme kokeillaa ajaa tilan seuraavalla komennolla.

$ sudo salt ’*’ state.apply sysstat

sysstat_ajo

Tilan ajo onnistui. Voimme myös testata samantien minionilla toiminnan, kuten kuvasta näkyy.

Lähteet:

Tero Karvisen nettisivut: http://terokarvinen.com/2018/aikataulu-–-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p

Kristian Syrjäsen ohjeet Saltin asentamiseen: https://ksyrjanen.me/2018/04/01/palvelinten-hallinta-harjoitus-1/

Palvelin hallinta viikko 1 harjoitus 1 – Salt

Tämän viikon harjoitus löytyy Tero Karvisen Palvelin hallinnan sivuilta.

Harjoituksessa käyttämäni kone on MSI:n GX 640 kannettava tietokone ja koneeseen on asennettu käyttöjärjestelmäksi Linux Xubuntu 16.04.3 LTS.

Voit saada oman Xubuntu 16.04.3 LTS versiosi seuraavasta linkistä.

Aloitan harjoituksen tekemisen maanantaina 2.4.2018 klo 10.40.

c) Asenna Salt Master ja Slave pull-arkkitehtuurilla (eli master on server). Voit laittaa herran ja orjan myös samalle koneelle. Kokeile suorittamalla salt:illa komentoja etänä.

klo 10.43

Aloitetaan suorittamalla harjoituksessa käytettävän koneen terminaalissa seuraava komento.

$ sudo apt-get update

Käytän tässä kohdassa apunani Teron ohjetta.

Asennetaan samalle koneelle master ja slave.

$ sudo apt-get install -y salt-master salt-minion

Asennuksen jälkeen määritellään master ja annetaan jokin id koneelle.

$ sudoedit /etc/salt/minion

minion

Kuvan ip-osoite on siis masterin ip-osoite ja sen saat antamalla hostname -I komennon terminaalissa.

Kun olemme tallentaneet muutokset, meidän tarvitsee käynnistää minion uudestaan seuraavalla komennolla.

$ sudo systemctl restart salt-minion.service

Tämän jälkeen voimme tarkastaa uusien minionien avaimet, jotka ovat vielä hyväksymättä seuraavalla komennolla.

$ sudo salt-key

Avaimen hyväksyntä tapahtuu seuraavalla komennolla.

$ sudo salt-key -A

salt-key

 

Edellä käytetty -A hyväksyy kaikki avaimet, mutta jos haluat hyväksyä jonkun tietyn monien minionien joukosta käytä seuraavaa komentoa.

$ sudo salt-key -a “minionin id”

Tämän jälkeen voimme testata toimiiko Salt, vaikka antamalla seuraava yksinkertainen komento.

$ sudo salt ’minion id’ cmd.run ‘ls /’

salt-testi

Kuten kuvasta näemme Salt toimii, joten voimme siirtyä seuraavaan kohtaan.

d) Kokeile jotain Laineen esimerkistä lainattua tilaa tai tee jostain tilasta oma muunnelma. Muista testata lopputuloksen toimivuus.

ja

f) Oikeaa elämää. Säädä Saltilla jotain pientä, mutta oikeaa esimerkiksi omalta koneeltasi tai omalta virtuaalipalvelimelta. (Kannattaa kokeilla Saltia oikeassa elämässä, mutta jos se ei onnistu, rakenna jotain oikeaa konettasi vastaava virtuaaliympäristö ja tee asetus siinä).

klo 10.50

Teen oman tilan käyttäen apuna Laineen tiloja ja Teron ohjetta.

Aloitetaan ensin luomalla hakemisto, jonne sls-tiedostot tallennetaan ja sen jälkeen voimmekin luoda ensimmäisen sls-tiedoston.

$ sudo mkdir /srv/salt

$ cd /srv/salt

Luomme tänne hakemistoon top.sls tiedoston, joka toimii ylimpänä tasona konfiguraatiossa. Tässä tiedostossa määrittelet minkä lopputuloksen haluat minioniltasi. Luodaan sls-tiedosto seuraavalla komennolla.

$ sudoedit top.sls

Tiedoston sisälle kirjoitan seuraavanlaisen tekstin.

top_sls

Tämä on siis oma lopputulokseni koneelleni. Seuraavaksi määrittelen sisällön editingille ja sen jälkeen muille.

Aloitetaan siis editing.sls tiedostosta.

editing_sls

Sitten office.sls.

office_sls

Ja lopuksi media.sls.

media_sls

Huom! Edellä kirjoitetut .sls tiedostot on kirjoitettu YAML:lla, jolloin aina rivinvaihdon myötä uusi rivi tarvitsee sisentää kahden välilyönnin verran. Eli tässä tapauksessa ei toimi tabulaattorilla sisennys.

Tämän jälkeen uudelleenkäynnistämme masterin ja minionin seuraavalla komennoilla:

$ sudo systemctl restart salt-minion.service

$ sudo systemctl restart salt-master.service

Jonka jälkeen voimme kokeilla antaa komennon joka asentaa määritellyt ohjelmat.

$ sudo salt ’minion id’ state.highstate

salt_ajo

Kuten kuvasta näkyy kaikki toimii kuten pitääkin, joten voimme siirtyä seuraavaan kohtaan.

e) Kerää laitetietoja koneilta saltin grains-mekanismilla.

klo 11.05

Voin tarkastella salt grains-mekanismilla käytössäni olevan koneen statistiikkaa. Käytän seuraavaa komentoa.

$ sudo salt ’*’ grains.items

Komento antaa laajan raportin käytössä olevasta koneesta.

grains_1

grains_2

grains_3

grains_4

Lopetin harjoituksen tekemisen 2.4.2018 klo 11.15 eli harjoituksen tekemiseen meni noin 35 minuuttia.

Lähteet:

Tero Karvisen nettisivut: http://terokarvinen.com/2018/aikataulu-–-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p