Harjoitus 6
Palvelinten hallinta kurssin viimeinen tehtävä.
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).
Valitsemani aihe oli asiakaskoneen yhdistäminen samba palvelimeen. En saanut kuitenkaan yhdistämistä onnistumaan kuin olin suunnitellut. Tuntui, että olisin tarvinnut kaksi konetta, että olisin saanut homman toimimaan. Tehtävää hankaloitti myös se, että ensimmäistä kertaa tutkin samban toimintaa. Ensin ajattelin, että voin asentaa samban julkiselle palvelimelleni ja siirtää tiedoston kotikoneelleni testinä. Sain selville, että julkisen verkon läpi ei kannattaisi näin tehdä. Tehtävä alkoi tuntua silloin mutkikkaalta.
Siksi päätin vain tehdä moduulin joka asentaa samba palvelimen, johon kuuluu jakokansion lisäys ja konffaukset smb.conf tiedostoon. Jouduin tehdä näin, koska aika oli loppumassa ja halusin esittää jotsin valmista.
Valmis versio: Samba-installation
B)
Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.
Kokeilin moduulini livetikulla.
Liitin koneen verkkoon.
“wget https://raw.githubusercontent.com/Varik96/Samba-installation/master/run.sh” komennolla sain run.sh tiedoston, jonka ajoin “bash run.sh” komennolla. Näin kaikki asentui, kuten piti. Kerran testi epäonnistui, koska nettipätki, mutta ajoin run.sh:n vain uudestaan, jonka jälkeen toimi
C)
Tähän c-kohtaan vain sanallinen vastaus, tämä kohta ei poikkeuksellisesti edellytä testejä tietokoneella.
Käyttäjätarina (user story): ketkä ovat modulisi käyttäjät?
Kuka vain, jolla on windows- ja linux-koneita.
Mitä he haluavat saada aikaan modulillasi?
Tiedostojen jakaminen nopeutuu. Alkuperäinen suunnitelmani olisi ollut paljon hyödyllisempi, mutta tästäkin hyötyä.
Missä tilanteessa he sitä käyttävät?
Samba serveriä voi hyödyntää tiedostojen jakamisessa, joten kotikoneilla olevat tiedostot voidaan jakaa muille koneille. Sitten esim. webbisivujen suunnittelussa tiimi voi jakaa nämä tiedostot toisilleen.
Mitkä ovat tärkeimmät parannukset käyttäjän kannalta, joita moduliin pitäisi vielä tehdä?
No alkuperäinen ideahan olisi se ideaali lisä. Muuten tehdä se niin, että se lisää linuxit ja windowsitkin.
Lähteet:
Harjoitus 5
B) Julkaise raportti MarkDownilla. Jos käytät GitHub:ia, se tekee muotoilun automaattisesti “.md”-päätteisiin dokumentteihin.
Tein c) kohdan MarkDownilla. README.md on raportti c) kohdasta.
C) Aja oma Salt-tila suoraa git-varastosta. Voit joko tehdä tilan alusta lähtien itse tai forkata sirottimen.
Tehtävä löytyy täältä:
https://github.com/Varik96/Test-repository-for-schoolwork
Lähde:
Harjoitus 4
Harjoitus 4
Palvelinten hallinta
B)
Tee kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummalekin orjalle menee eri tieto. Tee jokin muu kuin tunnilla tehty sshd-esimerkki.
Käynnistin koneen live-tikulta.
Aloitin komennooilla “setxkbmap fi” ja “sudo apt-get update”.
Asensin orjat ja masterin. Master ja orja xubuntulle ja toinen orja vagrantilla virtualboxille.
sudo apt-get -y install salt-master salt-minion
sudo apt-get -y install vagrant virtualbox
Slave1 asennus kuin ensimmäisessä kotitehtävässä xubuntulle, kohdassa A.
Slave2 vagrantilla.
vagrant init bento/ubuntu-16.04
vagrant up
vagrant ssh
Näin asensin virtuaalikoneen ja otin yhteyden ssh:lla. Sitten asensin sille salt-minion:in.
sudo apt-get -y install salt-minion
Sitten samat temput siihen asti, kunnes master on hyväksynyt. Samalla tavalla kuin slave1 siis.
Tein /srv/salt/ kansion ja sinne hello/ kansion. Sinne init.sls ja hello.txt
Sitten tein /srv/pillar kansion, jonne tein top.sls, slave1.sls ja slave2.sls.
Kokeilin pillar.items eli sudo salt ‘*’ pillar.items
Näkyi halutut tiedot.
Käynnistin tilan komennolla “sudo salt ‘*’ state.apply hello”
Katsoin kummankin orjan /tmp/ kansiosta, mitä olivat saaneet.
Tehtävä onnistui.
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.
B-kohdassa oli oletusarvo jo annettu hello.txt:ssä, joten muutan /srv/pillar/slave2.sls tiedostosta sen muuttujan.
Muutin “numero” muuttujan → “eitoimi”.
sudo salt ‘*’ state.apply hello
Pillar.items tarkistus.
Katsoin toimiko ja kyllä se toimi.
Lähteet:
http://terokarvinen.com/2018/simple-secrets-in-salt-pillars
http://terokarvinen.com/2017/vagrant-revisited-install-boot-new-virtual-machine-in-31-seconds
Harjoitus 3
Palvelinten hallinta H3
Aloitin komennolla sudo apt-get update.
B)
Tiedosto muotista: tee yksinkertainen SLS-tilatiedosto, joka laittaa muuttujan tiedostoon. Käytä jinjan kontekstimuuttujaa (template: jinja, context: …).
Tein salt tilan uuteen kansioon nimeltä jinjatest.
cd /srv/salt/
sudo mkdir jinjatest
sudoedit init.sls
Tässä näkyy init.sls:
Sitten tein colors.txt:n, jossa oli {{ color }} muuttuvana osana.
sudoedit colors.txt
sudo salt ‘*’ state.apply jinjatest
Ei virhe merkintöjä. Katsotaan oliko tapahtuma oikea.
Kyllä, jinja kansio on ilmestynyt. Sitten katsoin, että haluama teksti oli colors.txt tiedostossa.
Kyllä oli. Testi oli onnistunut.
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.)
Tein uuden kansion tälle tehtävälle ja sinne init.sls tiedoston.
sudo mkdir multi
sudoedit init.sls
Tein init.sls tiedoston väärään paikkaan, joten siirsin sen komennolla:
sudo mv /srv/salt/init.sls /srv/salt/multi/init.sls
Tältä init.sls näytti:
Init.sls tiedostoon oli otettu mallia täältä.
Sitten tarvittiin malli.txt tiedosto.
sudoedit malli.txt
Olikokeilun aika.
sudo salt ‘*’ state.apply multi
Tutkin oliko kaikki haluamat tiedostot ilmestyneet.
Kuvasta näkyy, että aluksi threefiles kansiota ei ole ja tilan myötä se oli ilmestynyt.
Testi onnistui.
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.
Tein uuden kansion ssh tilaa varten ja tein init.sls tiedoston.
cd /srv/salt/
sudo mkdir sshd
cd sshd
sudoedit init.sls
Kuva, miltä init.sls näytti. Valitsin portiksi 8888.
Haen sshd_config tiedoston tilan kansioon.
cd /etc/ssh/
sudo cp /etc/ssh/sshd_config /srv/salt/sshd/sshd_config
Muokkaan /srv/salt/sshd/ kansiossa sshd_config tiedostosta “Port” kohdan perään jinja muuttujan {{ port }}.
sudoedit sshd_config
Kokeilen tilaa.
sudo salt ‘*’ state.apply sshd
Testi toimi. Yritän uudestaan, kun olen ensin poistanut ssh:n.
sudo apt-get purge openssh-server
sudo salt ‘*’ state.apply sshd
Sitten kokeilin ssh:ta oletus porttiin 22.
ssh -p 22 riku@localhost
Ei toiminut, niinkuin oletin.
Sitten porttiin 8888.
ssh -p 8888 riku@localhost
Ja se toimi.
Testi oli onnistunut.
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.
Valitsin kokeiltavan tilan täältä.
Eli Kristian Syrjäsen tila sysstatin käyttöönotosta, jossa innoittajana Roope Varttila.
Aloitan ohjeen mukaan tekemällä sysstat kansion.
cd /srv/salt/
sudo mkdir sysstat
Sitten kopioin seuraavan tiedoston
sudo cp /etc/default/sysstat /srv/salt/sysstat/sysstat
Siinä vaihdettiin false -> true. Itsellä se olikin jo valmiiksi.
Teen samanlaisen init.sls tiedoston kuin Kristianilla.
sudoedit init.sls
Kokeilen toimiiko näiden ohjeiden mukaan.
sudo salt ‘*’ state.apply sysstat
Testasin ja se toimi.
Lähteet:
http://terokarvinen.com/2018/make-a-million-of-those-jinja-templating-salt-states
http://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port
https://ksyrjanen.me/2018/04/08/palvelinten-hallinta-harjoitus-2/
Harjoitus 2
Palvelinten hallinta H2
B)
Laita käyttäjien kotisivut toimimaan Apachella.
Aloitin vanhalla tutulla “sudo apt-get update”.
Koneellani oli valmiiksi apache asennettuna, joten poistin sen komennolla “sudo apt-get purge apache2”.
Aloitin apachen asennuksen alusta.
sudo apt-get install apache2
sudo a2enmod userdir
sudo service apache2 restart
Menin kotihakemistooni ja tein public_html kansion ja index.html tiedoston.
mkdir public_html
echo “testi sivu” |tee public_html/index.html
Kokeilin miltä firefoxissa localhost/~riku näyttää, ja sehän toimi.
Eikun tekemään orjille apache tilaa.
Ensin tein kansion apache salt tiedostoille. Sitten kopioin userdir.conf ja userdir.load tiedostot sinne.
/srv/salt/apache
sudo cp userdir.conf /srv/salt/apache/
sudo cp userdir.load /srv/salt/apache/
Kopioin userdir.conf ja userdir.load tiedostot, koska /etc/apache2/ kansiosta tutkimalla komennolla “sudo find -printf ‘%T+ M %p\n%A+ A %p\n%C+ C %p\n’|sort” pystyy tarkastelemaan viimeksi muokattuja tiedostoja aikajärjestyksessä. Niin saa haluamansa configuroinnit.
Sitten tein .sls tiedoston ja default-index.html:n.
sudoedit init.sls
sudoedit default-index.html
Aloitin testauksen eli poistin apachen taas.
sudo apt-get purge apache2
Localhost ei vastannut tämän jälkeen.
Sitten annoin komennon “sudo salt ‘*’ state.apply apache”
Toimi niinkuin piti.
C)
Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)
Tein /srv/salt/php kansion. Sitten tein tiedoston /srv/salt/php/init.sls, joka oli kopioitu apache tiedostosta.
Php:n asennus.
sudo apt-get -y install libapache2-mod-php
sudo apt-get -y install php
Muutin index.html:n php:ksi.
mv index.html index.php
Muutin sitä niin, että siellä oli php:tä.
<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
</head>
<body>
<h1>Hei maailma</h1>
<p>Tämä on testisivu</p>
<?php
echo “Hello World!”;
?>
</body>
</html>
Jotta php toimisi pitää mennä muuttamaan php7.0.conf tiedostoa.
sudoedit /etc/apache2/mods-available/php7.0.conf
Neljä viimeistä riviä kommentteihin, niin on helppo muuttaa takaisin.
Kopioin php7.0.conf filen /srv/salt/php/ kansioon.
sudo cp php7.0.conf /srv/salt/php/
Muokkasin init.sls tiedoston näin.
Testauksen aika.
Poistin libapache2-mod-php:n ja otin php7.0.conf tiedostosta kommentti merkit pois neljältä vikalta riviltä.
Sitten varmistin ettei php sivu toiminut, eikä se toiminut.
Komennolla “sudo salt ‘*’ state.apply php” sain asennettua php:n takaisin toimimaan kotisivuille. Piti kuitenkin ensin tehdä komento “sudo service apache2 restart”.
D)
Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.
Aloitin menemällä /etc/ kansioon ja muutin hosts tiedostoa. Lisäsin testi.com osoitteen.
Tein testi.com nimipohjaisen virtuaalipalvelimen, /srv/salt/apache/testi.com.conf.
<VirtualHost *:80>
DocumentRoot /home/riku/public_html/
<Directory /home/riku/public_html/>
Require all granted
</Directory>
</VirtualHost>
Tein virtualhost.sls tiedoston.
/etc/apache2/sites-enabled/testi.com.conf:
file.managed:
– source: salt://apache/testi.com.conf
apache2service:
service.running:
– name: apache2
– watch:
– file: /etc/apache2/sites-enabled/testi.com.conf
Firefoxissa testi.com toi oman sivuni
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.
Menin /etc/skel/ kansioon ja tein sinne public_html ja index.html tiedostot.
cd /etc/skel/
sudo mkdir public_html
cd public_html/
sudoedit index.html
Tein uuden käyttäjän ja kokeilin toimiiko kotisivu uudella käyttäjällä.
sudo adduser olentesti
Toimi.
Tein homesite.sls tiedoston.
sudoedit /srv/salt/homesite.sls
Eli
/etc/skel/public_html/index.html:
file.managed:
– source: salt://public_html/index.html
Tein seuraavat kansiot/tiedostot näin.
/srv/salt/public_html/index.html
cd /etc/skel/public_html/
sudo cp index.html /srv/salt/public_html
Poistin index.html tiedoston /etc/skel/ kansiosta.
Testasin toimiiko tila.
sudo salt ‘*’ state-apply homesite
Testikäyttäjän olentesti sivu näkyi taas selaimessa.
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 kokeilla latest toimintoa, jolla saa asennettua uusimmat versiot.
Muokkasin apache init.sls tiedostoa.
Poistin apache2:sen testatakseni tilan toimivuuden kuin kohdassa B).
Localhost ei ottanut enää yhteyttä.
Käytin komentoa “sudo salt ‘*’ state.apply apache”.
Testi vaikutti onnistuneelta ja localhost toimi taas.
Lähteet:
http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example
https://docs.saltstack.com/en/latest/topics/tutorials/states_pt1.html
https://docs.saltstack.com/en/latest/topics/tutorials/states_pt4.html
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html
Harjoitus 1
Palvelinten hallinta H1
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ä.
Asennan herran ja orjan samalle koneelle.
Ensin päivitys komento “sudo apt-get update”
Sitten asensin herran ja orajn komennolla “sudo apt-get -y install salt-master salt-minion”
Herra toimii koneen ip-osoitteella, jonka saa näkymään komennolla “hostname -I”
Orjalle piti antaa herrakoneen ip-osoite, jotta saataisiin yhteys. Annoin myös orjalle tunnuksen.
Komennolla “sudoedit /etc/salt/minion” muokkasin orjalle herran ip:n ja oman tunnuksen.
Käynnistin orjakoneen uudestaan komennolla “sudo systemctl restart salt-minion.service”.
Herran on hyväksyttävä orjakoneen yhteys komennolla “sudo salt-key -A”, jonka jälkeen hyväksyin kirjoittamalla “y”.
Kokeilin komentoa “sudo salt ‘*’ cmd.run whoami’”, joka toimi.
D)
Kokeile jotain Laineen esimerkistä lainattua tilaa tai tee jostain tilasta oma muunnelma. Muista testata lopputuloksen toimivuus. Huomaa, että varastossa on myös keskeneräisiä esimerkkejä, kuten Battlenet-asennus Windowsille.
Päätin ottaa mallia firewall.sls tiedostosta.
Aluksi tein kansion “salt” komennolla “sudo mkdir /srv/salt”
Tein sinne top.sls tiedoston komennolla “sudoedit top.sls”
Tein firewall.sls tiedoston, johon otin mallia Laineen tiedostosta.
Käynnistin herran ja orjan uudestaan komennolla “sudo systemctl restart salt-master.service” ja “sudo systemctl restart salt-minion.service”.
Sitten käytin komentoa “ sudo salt ‘*’ state.highstate”.
Testi oli epäonnistunut ja onnistunut. Epäonnistumiset johtuivat siitä, etten laittanut user.rules tai user6.rules tiedostoja. Muuten testi oli onnistunut.
E)
Kerää laitetietoja koneilta saltin grains-mekanismilla.
Käyttämällä komentoa “sudo salt ‘*’ grains.items” sain paljon tietoja orjakoneesta tai kaikista orjista, jos niitä olisi enemmän.
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ä).
Yritin asentaa salt-minion:in toimimaan Windows 10:lle. Tämä ei kuitenkaan onnistunut.
https://docs.saltstack.com/en/latest/topics/installation/windows.html
Täältä latasin Python3 AMD64 setup exe:n. Klikkailin next → I agree → master ip osoite ja minion id → next, latauksien jälkeen suljin ikkkunan. Oletin tällä homman olevan selvä, mutta ei toiminut. Tarkistin myös, että salt-minion oli käynnissä.
Herrakoneella olin avannut reiät portteihin 4505/tcp ja 4506/tcp. Olin myös käynnistellyt uudestaan.
Jatkan asian selvittämistä myöhemmin, koska kiinnostaisi saada se toimimaan.
Lähteet:
http://terokarvinen.com/2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux
http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this
https://github.com/joonaleppalahti/CCM/tree/master/salt/srv/salt
https://docs.saltstack.com/en/latest/topics/installation/windows.html
H7
H6
A)
Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.
Ensimmäisenä avasin terminaalin ja tein päivitys komennot
“sudo apt-get update” ja “sudo apt-get -y upgrade”
Python
Asennus “sudo apt-get -y install python3.5”
Komennolla “python3” pääsee ajamaan pythonia.
Tein tiedoston komennolla “nano heimaa.py”
Kirjoitin rivin “print(“Hei maailma”)” ja tallensin sen.
Ajoin sen komennolla “python3 heimaa.py”
Ruby
Asennus komennolla “sudo apt-get -y install ruby”
Kuvassa näkyvällä rivillä sain viestin näkymään.
C++
Asennus “sudo apt install g++”
Tein tiedoston komennolla “nano heimaa.cpp”
Sain seuraavilla riveillä viestin näkymään.
Lähteet:
https://www.programiz.com/cpp-programming/examples/print-sentence
https://en.wikibooks.org/wiki/Ruby_Programming/Hello_world
H5
A)
Asenna SSH-demoni
Avasin terminaalin, ja tein päivityksetkomennoilla “sudo apt-get update” ja “sudo apt-get upgrade”.
Asensin SSH:n komennolla “sudo apt-get -y install ssh”.
B)
Suojaa kone tulimuurilla, mutta tee ensin reikä SSH:lle
Ensiksi tehdään reikä SSH:lle komennolla “sudo ufw allow 22/tcp”
Minkä jälkeen “sudo ufw enable”
C)
Siirrä tiedostoja ssh:lla
Tein testi tiedoston komennolla “nano scptesti.txt”.
Sitten “scp /home/riku/scptesti.txt riku@localhost:/home/riku/Documents”
Siirto onnistui.
D)
Automatisoi kirjatuminen julkisen avaimen menetelmällä
Loin avaimen komennolla “ssh-keygen”
Kopioin sen localhost:iini komennolla “ssh-copy-id riku@localhost”.
Annoin salasanan.
Kokeilin ottaa yhteyden “ssh riku@localhost” ja ei tarvinnut enää antaa salasanaa.
J)
Asenna ja konfiguroi ja käynnistä sysstat-paketti. Tarkista sar-komennolla, että se on päällä, esim. näyttää lokimerkinnän “Linux reboot…”. Anna sysstatin pyöriä päivä tai pari. Tutki kuormitushistoriaa sysstatin komennoilla sar, iostat, pidstat… Analysoi tulokset, eli selitä perusteellisesti mitä tulokset tarkoittavat.
Asensin sysstatin komennolla “sudo apt-get -y install sysstat”
Konfiguroin sen asetuksista “ENABLED” -kohdan false → true
“sudoedit /etc/default/sysstat”
Käynnistin sysstatin komennolla “sudo systemctl start sysstat”
Annoin sysstatin pyöriä noin päivän ja kokeilin muutamia komentoja.
Kaikissa ensimmäisellä rivillä on ainakin käyttöjärjestelmän tiedot ja päivämäärä. 4 CPU tarkoittaa millainen prosessori on. Ymmärsin, että yhden rivin summa täytyy olla 100%. Eniten on %idle:ssä “sar” ja “iostat” komennoissa.
SAR
Linux restart luki väleissä milloin kone on käynnistetty. Kellonaika ennen ja jälkeen prosessori.
IOSTAT
Device: sda, jonka perässä näytetään luku- ja kirjoitus nopeuksia ja määriä.
PIDSTAT
En ymmärtänyt kunnolla mitä tiedot tarkoitti, paitsi että se seurasi yksittäisiä tehtäviä.
Lähteet: