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/

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