Alla linkit kaikista kurssin läksyistä, sisältäen miniprojektin.
https://miikazitting.wordpress.com/2018/11/13/palvelinten-hallinta-viikko-3/
Alla linkit kaikista kurssin läksyistä, sisältäen miniprojektin.
https://miikazitting.wordpress.com/2018/11/13/palvelinten-hallinta-viikko-3/
Tein oman salt moduulin joka tekee seuraavat asiat:
Yhteisesti ajaa saltilla “Hello World” komennon luoden tekstitiedoston kotihakemistoon käyttöjärjestelmästä riippumatta.
Linuxille: (moduulin osat githubista ufw, sekä ssh)
Windowsille: (githubin salt stackistä osio windows)
Tehtävät ovat suoraan kopioitu opettajamme Tero Karvisen sivuilta.
Viikotehtävä: Asenna LAMP Saltilla.
Suoritan tehtävät omalla pöytäkoneellani, sekä Linux Palvelimet kurssilla vuokraamallani virtuaalipalvelimella DigitalOceanista. Molemmissa järjestelmissä käyttöjärjestelmänä pyörii Xubuntu 18.04.01 LTS. Pöytäkoneeni Linux pyörii livetikulta.
Aloitin päivittämällä paketinhallinnan, sekä lataamalla Shutterin kuvakaappauksia varten.
sudo apt-get update
sudo apt-get -y install shutter
Seuraavaksi ajoin scriptini GitHubista joka tekee pöytäkoneestani salt-orjan virtuaalipalvelimelleni.
https://github.com/MiikaZitting/saltsetup
wget https://raw.githubusercontent.com/MiikaZitting/saltsetup/master/startup.sh
bash startup.sh
Hyväksyin pöytäkoneeni avaimen virtuaalipalvelimeltani:
sudo salt-key -A
Ajoin GitHubista löytyvän Apache2 moduulin, joka löytyi virtuaalipalvelimeni /srv/salt/ kansiosta ja varmistin että tämä asentui oikein. Kun ajo oli mennyt onnistuneesti läpi, tein pöytäkoneellani käyttäjälle public_html kansion johon index.html tiedoston.
sudo salt ‘*’ state.highstate
mkdir public_html
cd public_html
nano index.html
Sain tässäkin käytettyä jo olemassa olevaa Viikolla 2 tekemää php moduuliani joka löytyy myös GitHubistani.
Moduulissa ongelmana on että apache2 ei ole aikaisemmin käynnistynyt automaattisesti uudelleen. Palaan tähän ongelmaan kunhan olen kaikki LAMP stackin palaset saanut ensiksi omiksi moduuleikseen.
Muutin pöytäkoneella olevan public_html kansiossa sijaitsevan index.html tiedoston php muotoon ja sisällön muutin vastaavaksi:
Ajettuani php moduulin orjalleni ja käsin käynnistettyä apache demonin, tulokset sivulle olivat vastaavia:
Eli php toimii oikein tämän pohjalta, palaan tuohon apache2 demonin uudelleenkäynnistymis ongelmaan vielä myöhemmin.
Aloitin tietokantapalvelimen asentamisen ja moduulin luonnin virutaalipalvelimellani. Ensimmäiseksi asensin mariadb clientin, serverin, sekä php modulen mariadb:hen jotta php:n avulla voitaisiin tietokannasta hakea tietoja weppisivulla.
sudo apt-get -y install mariadb-client mariadb-server
sudo apt-get -y install php-mysql
Sitten kirjauduin mariadb:hen roottina, sekä tein tietokannan, sekä tietokannalle käyttäjän. (‘XXXXX’ merkkien tilalle salasana joka käyttäjälle halutaan asettaa)
sudo mariadb -u root
CREATE DATABASE saltbase;
GRANT ALL ON saltbase.* TO saltbase@localhost IDENTIFIED BY ‘XXXXXXXX’;
Seuraavaksi automatisoin kirjautumisen mariadb:hen.
nano .my.cnf
- [client]
user=”saltbase”
database=”saltbase”
password=”XXXXXXXX”
Nyt kirjoittamalla vain komennon “Mariadb” avaa ohjelma suoraan saltbase käyttäjän sisään.
MariaDB [saltbase]> CREATE TABLE todo (id INT AUTO_INCREMENT PRIMARY KEY, task VARCHAR(255));
Query OK, 0 rows affected (0.00 sec)MariaDB [saltbase]> SHOW TABLES;
+——————–+
| Tables_in_saltbase |
+——————–+
| todo |
+——————–+
1 row in set (0.00 sec)
Tässä vaiheessa taidot yksinkertaisesti loppuvat kesken. Sain moduulin luotua joka asentaa tarvittavat paketit, mutta tuon .my.cnf tiedoston hallitseminen saltilla ei vain tunnu onnistuvan omalla kohdallani. Tämä käytiin tunnilla 5 minuutissa, eikä opettajan sivuilla tähän ohjeita valitettavasti löydy.
Tehtävät ovat suoraan kopioitu opettajamme Tero Karvisen sivuilta.
a) Säädä Windowsia Saltilla siten, että Windows on orja ja Linux on herra.
b) Säädä Windowsia Saltilla ilman herra-orja rakennetta (salt-call –local)
c) Muuta jonkin Windows-ohjelman asetuksia Saltilla. Monia ohjelmia voi säätää laittamalla asetustiedoston paikalleen, aivan kuten Linuxissa.
d) Valitse aihe omaksi kurssityöksi ja varaa se kommenttina aikataulusivun perään.
e) Vapaaehtoinen: tee omaan käytössä olevaan (Windows, jos käytät Windowsia) koneeseesi Saltilla jokin säätö, josta on sinulle hyötyä jokapäiväisessä elämässä.
Suoritan tehtävät omalla pöytäkoneellani, sekä Linux Palvelimet kurssilla vuokraamallani virtuaalipalvelimella DigitalOceanista. Virtuaalipalvelimella pyörii Xubuntu 18.04.01 LTS. Pöytäkoneeni käyttää Windows 10 Pro käyttöjärjestelmää, josta etähallitsen virtuaalipalvelintani ssh yhteydellä PuTTya käyttäen.
Pöytäkoneeltani ei löytynyt vielä Windowsista salt-minion palvelua joten latasin sen alla olevasta linkistä. Masterillani salt versio oli 2017-07-04
https://repo.saltstack.com/windows/
***HUOM TARKISTA SALT VERSIONUMERO MASTERILTA, MIKÄLI VERSIOT EIVÄT OLE MINIONILLA JA MASTERILLA SAMAT VOI TULLA ETEEN ONGELMIA***
Seuraavaksi asensin salt-minion palvelun jonka latasin.
Asennuksen yhteydessä ohjelma pyysi syöttämään master koneen IP-osoitteen, sekä antamaan minionille nimen.
Asennuksen jälkeen käynnistin palvelun ja otin SSH yhteyden virtuaalipalvelimelleni PuTTylla.
Ja sieltähän se pyyntö olikin jo tullut. Sitten testasin että toimiiko yhteys masterilta minionille.
Komento antoi minulle vastauksen pöytäkoneeltani onnistuneesti, IP-osoite tietoturvasyistä peitetty. Minioni raspberry-pi3 ei ollut verkkoyhteydessä joten tämän vuoksi “No response”.
Avasin powershellin pöytäkoneellani sekä annoin seuraavat komennot:
Paikallisesti salt-call toimi oikein ja näytti oikean ip osoitteen sekä hostnamen.
Testasin myös ajaa lokaalisti saltin highstateen, sekä ilman lokaalia.
Koska paikallisesti ei ole koneellani mitään salt top tiedostoa niin komento ei tehnyt mitään. Mutta kun hain master koneeltani, ajoi se luomani hello moduulin onnistuneesti.
Moduuli kirjoittaa .txt tiedoston c:\ hakemistoon, moduulin toimii Linux, sekä Windows ympäristössä.
Latasin ensin git:in windowsilleni saltin avulla.
sudo salt ‘*WIN’ chocolatey.install gitsudo salt ‘*WIN’ chocolatey.install git
Seuraavaksi avasin Gitin koneellani ja asetin käyttäjänimen, sekä sposti osoitteen. Näistä tuli kohteeseen C:\Users\Miika .gitconfig niminen tiedosto. Tästä tiedostosta löytyi seuraava teksti:
[user]
email = a1704460@myy.haaga-helia.fi
name = Miika Zitting
Eli tämän tiedoston kopioimalla on mahdollista asettaa git:iin käyttäjänimi & salasana.
Loin salt masterilleni /srv/salt/gitconf/ tiedoston, jonne init.sls, sekä jonne kopioin .gitconf tiedoston windowsiltani.
Lisäsin top.sls tiedostoon sarakkeen gitconf moduulille, ja lähdin testaamaan.
Ensimmäiseksi poistin .gitconf tiedoston windowsiltani, sekä avasin gitin varmistaakseni ettei sieltä käyttäjätietoja löydy.
Sitten ajoin moduulin ja toivoin parasta.
Toisella yrittämällä sain aikaan onnistuneen ajon. Ensimmäinen ajo tyssäsi kirjoitusvirheeseen file managedin lokaatiossa.
Ja lopulta avattua gitin oli käyttäjätiedot tulleet uudesta .gitconfig tiedostosta.
Muutokset vielä mahdollisia oman moduulin rakenteeseen ^^
Tehtävät ovat suoraan kopioitu opettajamme Tero Karvisen sivuilta.
a) Tee skripti, joka tekee koneestasi salt-orjan.
Tee joko b tai c:
b) Lokianalytiikka. Kokeile viimeisintä versiota Jussin, Einon ja Sakun lokien analytiikasta. Täytä tai kommentoi GitHub-sivulla jotain bugia tai kehitysehdotusta. (Jos teit tätä tunnilla, tee uusi bugiraportti/kommentti uusimmasta versiosta) https://github.com/jisosomppi/log-analysis/tree/master/salt
c) Vagrant. Asenna Vagrant. Kokeile jotain uutta kuvaa Atlaksesta. Huomaa, että kuvat ovat vieraita binäärejä, ja virtuaalikoneista on mahdollista murtautua ulos. Jokohan Ubuntun virallinen Suodatin: VirtualBox, järjestys: Most downloads. https://app.vagrantup.com/boxes/search?provider=virtualbox
d) Ota tunnille mukaan ylimääräinen muistitikku. Jos osaat ja sinulla on Windowsin lisenssejä, tee siitä Windows 10 asennustikku. Levykuvia saa Microsoftin kotisivulta “download windows iso” ja koulun palveluista. Tikkua käytetään joko ensi tunnilla tai sitä seuraavalla.
Suoritan tehtävät omalla pöytäkoneellani, sekä Linux Palvelimet kurssilla vuokraamallani virtuaalipalvelimella DigitalOceanista. Molemmissa järjestelmissä käyttöjärjestelmänä pyörii Xubuntu 18.04.01 LTS. Pöytäkoneeni Linux pyörii livetikulta.
Asensin pöytäkoneelleni Shutter ohjelman kuvakaappauksia varten.
Sain scriptini valmiiksi jo viime opetuskerran aikana, joten käytin sitä tässä tehtävässä.
Scrpti löytyy kokonaisuudessaan GitHubistani.
Scripti ajaa koneelle suomalaisen näppäinasettelun, päivittää paketinhallinnan, asentaa salt-minionin, sekä tekee muutokset /etc/salt/minion tiedostoon asettaen koneen jolla scripti ajetaan virtuaalipalvelimeni orjaksi.
Ajoin scriptin seuraavilla komennoilla:
cd /bin/
sudo wget https://raw.githubusercontent.com/MiikaZitting/saltsetup/master/startup.sh
sudo chmod ugo+x startup.shcd
startup.sh
Päätin ajaa wget:in suoraan /bin/ kansioon jotta komento olisi käytettävissä missä vain hakemistossa, sekä lisäsin scriptiin suoritusoikeudet.
Seuraavaksi otin ssh yhteyden virtuaalipalvelimelleni, josko scriptin ajo olisi onnistunut.
Ja olihan se !
Scriptin huono puoli on ainoastaan se että se lisää automaattisesti orjan nimellä “practisepc”. Muutos tähän tulee torstain tunnilla.
Aloitin asentamalla Vagrantin & VirtualBOX:in
sudo apt-get -y install vagrant
sudo apt-get -y install virtualbox
Valitsin kokeiltavaksi kuvaksi Debian/jessie64, sillä en ole debianiin pohjautuvia käyttöjärjestelmiä käyttänyt aikaisemmin.
https://app.vagrantup.com/debian/boxes/jessie64
sudo mkdir debian
cd debian/
sudo vagrant init debian/jessie64
sudo vagrant up
Sain virtuaalikoneen käynnistymään :
Seuraavaksi otin ssh yhteyden virtuaalikoneelle:
sudo vagrant ssh
Ajoin seuraavaksi wget komennon hakeakseni GitHubin scriptini ja kokeillaakseni sitä debianilla.
wget https://raw.githubusercontent.com/MiikaZitting/saltsetup/master/startup.sh
Muutin vielä komennosta salt minion tiedoston id:n oikeaksi, ettei tuli 2 samannimistä laitetta masterille.
Scriptistä toimi kaikki muut osioit oikein, paitsi “setxkbmap” joka oli järjestelmän mukaan unknown command.
Ja virtuaalipalvelimenikin näki uuden orjan avaimen hyväksyttävänä.
Debianilla komentoja kokeillessani, sekä tiedostorakennetta tutkiessani huomasin että debian on rakenteeltaan hyvin samantapainen kuin itselleni tutumpi xubuntu.
Tämän osion suoritin pöytäkoneellani Windows 10 Pro käyttöjärjestelmässä.
https://www.microsoft.com/fi-fi/software-download/windows10
Latasin kyseisestä linkistä Windowsin Media Creation toolin, jolla saa luotua toimivan Windows 10 asennusmedian.
Muistia ohjelmisto vaatii USB tikulta vähintään 8gb, valitsin Windows 10 käyttöjärjestelmän Englanninkielisen version.
Ohjelma sai USB tikun onnistuneesti luotua. Mielenkiintoinen huomio oli että vaikka olin muistitikulle osioinut 9gb osion niin windowsin usb median luonti työkalu poisti kaikki osioinnit, sekä loi vain yhden osion tätä mediaa varten.
Testauksen suoritan tikulle Torstain tunnilla labran tietokoneille.
12-11-2018
Viikon 3 raportti löytyy GitHubistani.
Koko raportti kirjoitettu Markdownilla.
04-11-2018
a) Opiskele yllä aikataulussa olevat artikkelit. (Tätä lukutehtävää ei tarvitse raportoida). Luettava materiaali on kunkin tapaamiskerran kohdalla, esimerkiksi nyt “2. Package-file-server. […] Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt..”
b) Asenna SSH eri porttiin Package-File-Service rakenteella. Käytä service:watch -tekniikkaa niin, että demoni käynnistyy uudelleen, kun asetustiedosto muuttuu. (Vinkki: Pkg-File-Service – Control Daemons with Salt)
c) Asenna Apache käsin niin, että käyttäjien kotisivut näkyvät. Etsi muutetut tiedostot komennolla ‘find /etc/ -printf ‘%T+ %p\n’|sort’. (Muista korjata lainausmerkit oikeiksi, automaattimuotoilu usein sotkee ne). Yritä nyt tehdä tila, joka asettaa nuo tiedostot (file.symlink) paikoilleen. (Katso tarvittaessa: Apache User Homepages Automatically)
d) Eri package-file-service. Tee package-file-service tilalla jokin eri asetus tai asennus kuin tunnilla ja tehtävän muissa kohdissa.
Suoritan tehtävät omalla pöytäkoneellani, sekä Linux Palvelimet kurssilla vuokraamallani virtuaalipalvelimella DigitalOceanista. Molemmissa järjestelmissä käyttöjärjestelmänä pyörii Xubuntu 18.04.01 LTS. Pöytäkoneeni Linux pyörii livetikulta.
Koneiden rauta nähtävissä Viikon 1 tehtävissä.
Tehtäviä varten poistin virtuaalipalvelimelta jo löytyvät asetukset ja asennukset salt-master, sekä apachen osalta. Myös tulimuurin sääntölistalta poistettu salt:in vaatimat portit.
Käytin seuraavia komentoja:
apt-get purge salt-master
sudo ufw delete allow 4506/tcp
sudo ufw delete allow 4505/tcpsudo apt-get purge apache2
sudo rm -r public_html/
sudo rm /var/www/html/index.html
Virtuaalipalvelimellani oli valmiina jo ssh demoni asennettuna, sekä tätä varten tehty tulimuuriin reikä porttiin 22/tcp.
Ensimmäiseksi vaihdoin ssh:n oletusportin porttiin 8888.
sudoedit /etc/ssh/sshd_config
sudo systemctl restart ssh
logout
Tämän jälkeen yritin kirjautua ssh yhteydellä uudestaan virtuaalipalvelimelle.
En päässytkään kirjautumaan sisään ensiksi oletusporttiin (22), enkä myöskään uuteen porttiin (8888). Tämähän johtui tietysti siitä että unohdin lisätä virtualipalvelimen tulimuuriin allow säännön porttiin 8888.
Jouduin menemään DigitalOceanin sivujen kautta ja avaamaan console yhteyden weppiselaimella palvelimelleni, jotta saisin taas ssh yhteydet pelittämään.
Tämän korjauksen jälkeen sain taas ssh yhteyden virtuaalipalvelimelleni porttiin 8888.
Latasin ensin virtuaalipalvelimelleni salt-masterin viimeviikon tehtävien ohjeiden mukaisesti.
sudo apt-get -y install salt-master
sudo ufw allow 4505/tcp
sudo ufw allow 4506/tcp
sudo apt-get -y install salt-minion
sudoedit /etc/salt/minion
- master: 104.248.162.226
- id: poytakone
sudo systemctl restart salt-minion
Virtuaalipalvelimelle tuli pyyntö pöytäkoneeltani ja hyväksyin avaimen komennolla:
sudo salt-key -A
Testasin että master-slave yhteys toimi oikein viimeviikolla tekemälläni grains komennolla.
Tässä osiossa käytin http://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port kyseisestä linkistä löytyvää ohjetta, sekä pohjaa sshd.sls tiedostolle.
sudo mkdir /srv/salt/ssh
sudoedit sshd.sls
openssh-server: pkg.installed /etc/ssh/sshd_config: file.managed: - source: salt://ssh/sshd_config sshd: service.running: - watch: - file: /etc/ssh/sshd_config
sudo cp /etc/ssh/sshd_config /srv/salt/ssh/
sudoedit sshd_config
# DO NOT EDIT – this is a managed file, changes will be overwritten
Viimeisin rivi on tärkeä lisätä mikäli jokin tiedosto kopioituu orja koneelle, sillä kaikki orjan tekemät muutokset poistuvat kun master ajaa taas highstaten ja korvaa kaiken /srv/ssh kansiosta löytyvällä.
Seuraavaksi ajoin seuraavan komennon ja katsoin toimiiko uusi ssh state.
sudo salt ‘*’ state.apply sshd
Katsoin tämän pöytäkoneeltani johon state oli ajettu.
Lisäsin vielä pöytäkoneen tulimuuriin säännön portille 8888.
sudo ufw allow 8888/tcp
Seuraavaksi yritin ottaa virtuaalipalvelimeltani ssh yhteyden pöytäkoneeni porttiin 8888. Tämä ei toiminut, mitään ei tapahtunut. Virtuaalipalvelin jää vain miettimään eikä anna mitään error viestiä tai muuta.
Koitin etsiä lokitiedostoista, mistä toimimattomuus voisi johtua, mutta tuloksetta. Lokitiedostoihin ei kerry mitään dataa epäonnistuneesta yrityksestä.
Seuraavaksi koitin kirjautua pöytäkoneellani ssh yhteydellä pöytäkoneeseeni. Tämä onnistui porttiin 8888 normaalisti.
Epäilin että sshd_config tiedostossa olisi jotain häikkää. Muutin PermitRootLogin No kohdan “Yes” ja ajaa taas state.apply ssh, mutta tuloksetta. Koitin myös lisätä “#” kyseisen rivin kohdalle ja ajaa state.apply ssh, eikä sekään toiminut. Tälle ongelmalle selvisi syyksi se että kotikoneeni on reitittimen takana, josta tuo portti 8888 ei ole avattu. En halua avata reitittimestäni mitään ylimääräistä, joten tila saa jäädä noin.
06-11-2018
Uusi päivä uudet haasteet. Pöytäkoneeni linux on puhdas livetikku boot. Päivitin paketinhallinnan, sekä latasin shutter ohjelman kuvakaappauksia varten. Asensin uudestaan ssh demonin etäyhteyttä varten, sekä asensin salt-minion palvelun uudestaan, johon laitoin virtuaalipalvelimeni masteriksi.
Latasin ensiksi Apachen virtuaalipalvelimelleni, sekä latioin kotisivut näkymään alla vaiheet:
sudo apt-get -y install apache2
echo Default VEX! | sudo tee /var/www/html/index.html
Apache toimi kuten piti, sekä vaihdoin default sivun pois. Seuraavaksi laitoin käyttäjän kotisivut näkymään:
mkdir public_html
cd public_html/
nano index.html
sudo a2enmod userdir
sudo systemctl restart apache2
Nyt käyttäjänkin kotisivut toimivat ja näkyivät oikein.
Seuraavaksi rupesin tekemään tilaa joka tekisin automaattisesti käyttäjän kotisivut näkyviin.
find /etc/ -prinfind /etc/ -printf ‘%T+ %p\n’|sorttf ‘%T+ %p\n’|sort
Kopioin pohjan sls tiedostoon suoraan TÄSTÄ linkistä.
Sitten ajoinkin jo seuraavan komennon ja tulokset olivat vastaavia :
sudo salt ‘*’ state.apply apache
Apache asentui oikein automaattisesti pöytäkoneele, sekä muokkasi apachen default pagen omaan tekstiini. Sivu vastasi localhostista ja ip:stä yllä olevan kuvan tavalla.
Sitten testasin vielä käyttäjällä omien kotisivujen luomista:
Kotisivut näkyvät käyttäjälle suoraan, eli salt tila on onnistuneesti luotu. YIHUU
Lähdin tekemään tilaa joka asentaa php moduulin apacheen, ja tätä kautta sallii php:n ajon weppisivulle.
Ensimmäiseksi latasin virtuaalipalvelimelleni php moduulin.
sudo apt-get -y install php
Seuraavaksi enabloin php:n ajon sivuilla apachen asetuksista.
cd /etc/apache2/mods-available/
sudoedit php7.2.conf
“#” risuaidoitin IF moduulin conf tiedostosta.
Seuraavaksi käynnistin apachen uudelleen ja tein public_html kansiossa olevasta index.html tiedostosta php tiedoston.
sudo systemctl restart apache2
sudo rm index.html
nano index.php
miika@Ubuntu-LinuxPalvelimet:~/public_html$ cat index.php
<?phpprint “hello world!”
?>
Php toimii oikein weppisivulla, joten seuraavaksi tein tästä tilan.
cd /srv/salt/
sudo mkdir php
cd php/
sudoedit init.sls
Seuraavaksi kopioin php7.2.conf tiedoston apachen mods-available kansiosta, lisäsin myös oikeudet muokata varmuuden vuoksi.
sudo cp /etc/apache/mods-available/php7.2.conf /srv/salt/php/php7.2.conf
sudo chmod ugo+x php7.2.conf
Ajoin tilan seuraavaksi orjalle
sudo salt ‘*’ state.apply php
Tila asentui oikein pöytäkoneelleni, joten tein pöytäkoneen public_html/index.html tiedostosta php tiedoston. Indexi täytyy tehdä itse, sillä tila ei tee automaattisesti uutta php indexi tiedostoa ainoastaan mahdollistaa php:n käytön.
Seuraavaksi koitin weppiselaimella toimiiko sivu, ja eihän se toiminut….
Tila ei käynnistä apachea uudestaan, eli uudet php asetukset eivät tule käyttöön.
Käynnistin apachen manuaalisesti uudestaan ja tulos on vastaava:
sudo systemctl restart apache2
It’s ALIVE ! Php tilan asetukset ovat onnistuneesti ajettu pöytäkoneelleni saltin avulla.
30-10-2018
a) Lue virallisesta Salt Getting Started Guide -kirjasta luvut Understanding SaltStack (noin 8 alasivua) ja SaltStack Fundamentals (6 alasivua, ei tarvitse asentaa demoympäristöä) ja SaltStack Configuration Management: Functions (1 alasivu). (Tätä lukutehtävää ei tarvitse raportoida).
b) Silmäile Laineen 2017 varastossa olevia salt -asetuksia. (Tätä lukutehtävää ei tarvitse raportoida).
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ä.
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.
e) Kerää laitetietoja koneilta saltin grains-mekanismilla.
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ä).
g) Vapaaehtoinen: asenna ja konfiugroi jokin palvelin Saltilla. (package-file-server)
Suoritan tehtävät omalla pöytäkoneellani, sekä Linux Palvelimet kurssilla vuokraamallani virtuaalipalvelimella DigitalOceanista. Molemmissa järjestelmissä käyttöjärjestelmänä pyörii Xubuntu 18.04.01 LTS. Pöytäkoneeni Linux pyörii livetikulta.
Alla kuva järjestelmien raudasta komennolla :
sudo lshw -short -sanitize
Ensimmäisenä asensin salt-masterin virtuaalipalvelimelleni, sekä tein tarvittavat muutokset salt:ia varten.
sudo apt-get -y install salt-master
sudo ufw allow 4505/tcp
sudo ufw allow 4506/tcp
Nyt tulimuuriin on luotu reikä salt:ia varten. Seuraavaksi katsoin virtuaalipalvelimeni ip:n jonka asetin seuraavassa vaiheessa pöytäkoneeni salt-master osoitteeksi.
miika@Ubuntu-LinuxPalvelimet:~$ hostname -I
104.248.162.226 10.16.0.5 2a03:b0c0:1:e0::359:b001
Seuraavaksi latasin salt-minionin pöytäkoneelleni, sekä asetin salt-masteriksi virtuaalipalvelimen ip-osoitteen.
sudo apt-get -y install salt-minion
sudoedit /etc/salt/minion
- master: 104.248.162.226
- id: kotikone
sudo systemctl restart salt-minion
Seuraavaksi katsoin tuliko virtuaalipalvelimelle pyyntöä kotikone id:llä ja tulihan sieltä. Hyväksyin pyynnön ja testasin etäkäyttöä lataamalla pöytäkoneelleni shutterin tehtävien kuvakaappaamista varten.
miika@Ubuntu-LinuxPalvelimet:~$ sudo salt-key -A
[sudo] password for miika:
The following keys are going to be accepted:
Unaccepted Keys:
kotikone
Proceed? [n/Y]sudo salt ‘*’ cmd.run ‘sudo apt-get -y install shutter’
sudo salt ‘*’ cmd.run ‘whoami’
Ja alla kuva otettuna shutterilla joka latauitui virtuaalipalvelimen komennolla.
Valitsin tulimuurin asetusten muuttamisen ja aktivoinnin tehtäväkseni, sillä siihen löytyi Laineen sivulta (https://github.com/joonaleppalahti/CCM/tree/master/salt/srv/salt) hyvät pohjat joita oli helppo käyttää omassa tehtävässäni.
Ensiki loin kansiot /srv, /srv/salt, sekä /srv/salt/firewall juureen,
sudo mkdir /srv
sudo mkdir /srv/salt/
sudo mkdir /srv/salt/firewall
Tämän jälkeen loin 2 tekstitiedostoa, johoin määriteltiin mitä konfiguraatioita salt ajaa orjalleen. Alla myös kuva tiedostojen sisällöstä. firewall.sls konfiguraatio on suoraan kopioitu TÄÄLTÄ.
sudoedit top.sls
sudoedit firewall.sls
Seuraavaksi kopioin tulimuurin sääntölistat virtuaalipalvelimen tulimuurin kansiosta. Sääntölistat ja kaikki tulimuurin asetukset löytyvät /etc/ufw.
sudo cp user.rules /srv/salt/firewall
sudo cp user6.rules /srv/salt/firewall
Seuraavaksi siirryin testaamaan toimiiko tehty tila.
sudo salt ‘*’ state.highstate
Ensimmäiset yritykset eivät suorittaneet ajoa pöytäkoneelle, sillä olin unohtanut että tulimuurin sääntölistaa kopioidessa tiedoston lukuoikeudet olivat vielä erittäin rajoitetut.
Muutin kopioitujen sääntölistoihin lukuoikeuden kaikille käyttäjille seuraavilla komennoilla.
sudo chmod ugo+r user.rules
sudo chmod ugo+r user6.rules
Alla vielä kuva tilanteesta kun oikeudet puuttuivat, sekä oikeuksien muutoksen jälkeen.
Seuraava yritys:
sudo salt ‘*’ state.highstate
Tällä kertaa virtuaalikone ei herjannut erroria, mutta muutosten ajo kesti useamman minuutin ajan. Lopulta sain raportin että muutokset ajettu onnistuneesti.
Alla kuva pöytäkoneen tulimuurin tilasta, sekä yhteenvedosta virtuaalipalvelimelta.
Grains komennolla hetken testailleeni päädyin seuraavaan “unelmien” grains komentoon, joka kertoo koneen mac osoitteen, ipv4-, sekä ipv6- osoitteen
Komenonti näyttää tältä:
sudo salt ‘kotikone*’ grains.item ipv4 ipv6 hwaddr_interfaces
Ja vastaus terminaaliin näyttää tältä:
Tein tekstitiedoston /srv/salt/peruspaketti.txt johon laitoin sisään seuraavat asiat:
miika@Ubuntu-LinuxPalvelimet:/srv/salt$ cat peruspaketti.sls
shutter:
pkg.installedgimp:
pkg.installedfi:
keyboard.system
Eli tämä ajaessa orjan tulisi ladata shutter ja gimp, sekä asettaa näppäimistöasettelu suomeksi. Testiä varten muutin pöytäkoneen näppäinasettelun US.
sudo salt ‘kotikone*’ state.highstate
Shutter pöytäkoneelta löytyikin jo, mutta gimp latautui oikein. Näppäimistöasettelu ei muuttunut vaikka virtuaalipalvelimelle yhteenveto ajosta näytti layoutin muuttuneen onnistuneesti. Selvitän mistä tämä toimimattomuus johtuu ensi viikon tunneilla.
09-10-2018
a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta).
b) Kaikki tehtävät arvioitavaksi. Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi. Arviointi tehdään ensisijaisesti tästä linkistä. Linkki voi olla esimerkiksi blogin etusivu (jos blogissa on vain kotitehtävät) tai sivuun, jossa on linkki kuhunkin tehtävään. Kaikki tehtävät -linkin palautus Moodlessa kohtaan “Kaikki tehtävät arvioitavaksi”.
c) (vapaaehtoinen) Käytä Linuxia kurssin ulkopuolella.
d) (vapaaehtoinen) Varaa kalenteristasi viikon välein aikoja Linux-harjoitteluun kurssin jälkeen.
Valitsin laboratioharjoitukseksi harjoituksen keväältä 2017. Linkistä pääsee harjoituksen sivulle.
Haluamme tehdä PHP-kotisivuja etäältä.
Työntekijöitämme ovat Jorma Mähkylä, Pekka Hurme, Ronaldo Smith, Håkan Petersson, Einari Mikkonen, Einari Vähäkäähkä, Eija Vähäkäähkä. Tee heille HTML5-esimerkkikotisivut siten, että kunkin testisivun otsikossa lukee omistajan käyttäjätunnus.
Maija Virtanen jatkaa ylläpitoa, tee hänelle sudo-tunnus. Maija haluaa käyttäjätunnuksen “maija”.
Pekka Hurme aloittaa LAMPin opiskelun. Tee Pekalle oma tietokanta, ja muuta hänen PHP-esimerkkisivunsa näyttämään tietueita tietokannasta (eli tietokantojen “hei maailma”).
Jorma aikoo kehittää uuden sivun sleep.example.com. Laita Jorman kotisvu näkymään myös tästä osoitteesta. Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.
Suojaa kone tulimuurilla.
Tee uusi komento ‘wowstats’, joka näyttää tietoja koneen tilasta. Sen tulee toimia jokaisella käyttäjällä työhakemistosta riippumatta.
Tee kaikki niin realistisesti, kuin se labrassa on mahdollista: käytä järkeviä käyttäjätunnuksia ja salasanoja. Testaa kaikki palvelut niin julkisilla nimillä tai IP-osoitteilla, kuin labrassa on mahdollista.
Ensimmäiseksi latasin ssh demonin etätyöskentelyä varten.
Reikä tulimuuriin ssh:ta varten, sekä valmiiksi http portti weppisivuja varten,
Verbose näytti vastaavalta:
xubuntu@xubuntu:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skipTo Action From
— —— —-
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
Tulimuuri valmis joten siirryin seuraavaan osaan.
Apache asentui seuraavilla komennoilla, sekä korvasin oletussivun tekstillä:
Oletussivu korvattu onnistuneesti.
Enabloidaan käyttäjän kotisivujen ajaminen kotihakemiston kansiosta:
Käyttäjän kotisivut toimivat kotihakemiston public_html kansiosta oikein.
Ja jotta php:ta voitaisiin ajaa tulee sijainnista /etc/apache2/mods-available/ muokata tiedostoa php7.2.conf.
Public_html kansion indexiin kirjoitettu vastaavaa ja muutettu nimi index.php
<?php
Print “Hello World!”
?>
Lopputulos oli vastaava:
PHP näytti toimivan oikein joten siirryin seuraavaan osioon.
Loin jokaiselle käyttäjälle omat tunnukset, Maijalle lisättiin vielä sudo oikeudet. Kaikille käyttäjille oli tarkoitus luoda omat weppisivut jonka otsikossa lukee käyttäjän nimi. Jotta jokaiselle et tarvitse luoda erikseen omaa public_html kansiota, tein ensin public_html kansion. Sitten siirsin public_html kansion /etc/skel:iin.
Käyttäjätunnuksen salasanoja varten latasin pwgen:in jolla saan generoitua vahvoja salasanoja käyttäjille.
Loin 12 merkkisiä salasanoja 10 kpl joista valitsin 6 käyttäjiä varten.
Käyttäjien kotisivuja varten tein bash scriptin jonka ajamalla käyttäjän public_html kansioon luodaan automaattisesti index.html tiedosto joka saa sivun näyttämään käyttäjätunnuksen otsikossa.
Scriptistä tuli vastaavanlainen:
#!/bin/bash
echo “<title>$(whoami)</title>” | tee public_html/index.html
Kuten kuvasta näkyy on sivun otsikkona käyttäjän nimi, tässä tapauksessa “xubuntu”.
Scripti toimi joten lisäsin siihen kaikille oikeuden ajaa, sekä siirsin sen /bin :iin.
Loin ensimmäiseksi käyttäjän jorma:
Salasanaksi asetin pwgenillä luomistani 12 merkkiä pitkistä salasanoista.
Testasin käyttäjän etäkäytön ja varmistin että scripti toimii:
jorma@xubuntu:~$ omasivu
<title>jorma</title>
Otsikko on “jorma” eli scripti toimi myös oikein käyttäjällä. Seuraavaksi siirryin muiden käyttäjien luomiseen ja testaamiseen.
Loin 6 uutta käyttäjää omille nimilleen, luodut käyttäjät käyttäjänimineen alla:
Maija Virtasen käyttäjästä tehtiin myös sudokäyttäjä.
Testattu etäkäyttö kaikilla käyttäjilla ja ajettu “omasivu” scripti jolla saatu aikaan odotetut tulokset kuten jormankin käyttäjällä. Maijan käyttäjällä testattu myös että sudo oikeudet ovat perityneet.
maija@xubuntu:~$ sudo whoami
[sudo] password for maija:
root
Asennettu mariadb:
Käynnistetty mariadb sudona ja luotu uusi tietokanta jota varten oma käyttäjä:
“*” merkkien tilalle laitettava haluttu salasana mariadb käyttäjälle.
Testattu että käyttäjälle kirjautuminen toimii, sekä että käyttäjä ei pysty luomaan tietokantoja. Ainoastaan tiettyyn tietokantaan tauluja ja muita tietoja.
SELECT * näytti vastaavalta:
MariaDB [pekkadb]> SELECT * FROM pekkapoints
-> ;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
| 2 | hide | 0 |
+—-+————+——–+
2 rows in set (0.00 sec)
Seuraavaksi testasin että CRUD toimii tietokannassa oikein:
MariaDB [pekkadb]> SELECT * FROM pekkapoints
-> ;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
| 2 | hide | 1 |
+—-+————+——–+
2 rows in set (0.00 sec)
Update toimi.
Seuraavaksi DELETE:
MariaDB [pekkadb]> SELECT * FROM pekkapoints;
+—-+————+——–+
| id | move | points |
+—-+————+——–+
| 1 | kurkipotku | 10 |
+—-+————+——–+
1 row in set (0.00 sec)
CRUD toimii oikein testien perusteella.
Asensin paketinhallinnasta paketin jolla voidaan php:n avulla lukea tietoja tietokannasta:
Seuraavaksi muokkasin pekka käyttäjän index.html tiedostoa. Koodina käytin pohjaa joka löytyy linkistä:
http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo
Koodi näytti vastaavalta kun siihen oli laitettuna tietokannan ja käyttäjän tiedot:
<title>pekka</title>
<?php
// public_html/index.php – Read MySQL from PHP
// (c) 2016 Tero Karvinen http://TeroKarvinen.com// MySQL Login
$user=’pekkadb’;
$password=’*****’;// Data Source Name i.e. connection details
$database=$user;
$dsn=”mysql:host=localhost;charset=UTF8;dbname=$database”;// Open Connection, create new object of PDO class
$pdo=new PDO($dsn, $user, $password);// Perform SQL Query
$pdoStatement=$pdo->prepare(‘SELECT * FROM pekkapoints;’);
$pdoStatement->execute();
$hits=$pdoStatement->fetchAll();// Print the $hits Array
foreach($hits as $row) {
echo “<p>”.$row[‘id’].” “.$row[‘move’].” “.$row[‘points’].”</p>\n”;
}
?>
Testisivu näytti tiedot näin:
Eli tietojen lukeminen tietokannasta on onnistunut !
Järjestelmä ei useiden tuntien yritysten jälkeen vieläkään sallinut näyttämään jorman kotisivuja sleep.example.com sivulta.
Ongelmaksi muodostui sleep.example.com sivun ajaminen käyttäjän kotihakemistosta. /etc/apache2/sites-available/ kansioon loin uuden conf tiedoston jorman sivuja varten mutta tämän enabloitua ja apachen restarttia ajaessa antoi järjestelmä vastaavan virheen:
sudo systemctl restart apache2
Job for apache2.service failed because the control process exited with error code.
See “systemctl status apache2.service” and “journalctl -xe” for details.
Apachen lokitietojen selaaminenkaan ei tuottanut tulosta, enkä löytänyt ratkaisua tähän osioon.
Loin käyttäjällä tekstitiedoston wowstats.sh johon kirjoitin vastaavaa:
#!/bin/bash
echo “Hello,”
whoamiecho “Your IP is:”
hostname -iecho “Your temps are:”
sensors -Aecho “Status of ram is:”
free -m
Lisäsin kaikille käyttäjille oikeuden suorittaa
Ajoin scriptin omassa kotihakemistossa sudo käyttäjällä ja se toimi oikein. Nimesin scriptin uudelleen ja siirsin /usr/bin/ kansioon.
Seuraavaksi otin ssh yhteyden jorman koneelle ja kotihakemistossa suoritin komennon “wowstats”:
Scripti toimii oikein käyttäjillä hakemistosta riippumatta !
Tässä vielä kuvakaappaus mitä pitäisi palauttaa labraharjoituksen päätteeksi eri tiedostoina.
01-10-2018
a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt. (Uusin versio: Programming Languages on Ubuntu 18.04. Vinkkejä: vanhat kotitehtäväraportit, Hei maailmojen lista, Hello Go, osin hieman vanha Programming Languages on Linux).
b) (vapaaehtoinen) Kirjoita kullakin kielellä yksinkertainen ohjelma, jolla on jokin käyttötarkoitus. Ideoita: hyödynnä kielen vahvuuksia. Ota käyttäjältä syöte, tee jokin lasku ja tulosta vastaus (input-processing-output).
Tehtävien suorituksessa käytin kyseistä linkkiä apuna:
Ensimmäisenä loin oman hakemiston johon voin tallentaa harjoitukseen tehtävät tiedostot.
Varmistin että python oli asennettuna järjestelmään komennolla:
xubuntu@xubuntu:~/Testit$ sudo apt-get install python
Reading package lists… Done
Building dependency tree
Reading state information… Done
python is already the newest version (2.7.15~rc1-1).
0 upgraded, 0 newly installed, 0 to remove and 180 not upgraded.
Järjestelmästä löytyi jo pythoniin vaadittavat paketit joten pystyin jatkamaan tehtävää.
Loin “Testit” hakemistoon tiedoston hellow.py:
Seuraavaksi kirjoitin tekstitiedostoon koodia:
print(“Hello World!”)
Testasin koodia terminaalissa komennolla:
Ja vastaukseksi tuli :
Koodi toimi oikein joten siirryin seuraavan kielen pariin.
Varmistin että bash on ajantasalla:
Vastaus oli sama kuin Pythonin kanssa eli ei tiedostoja ladattu tai päivitetty.
Loin uuden tekstitiedoston “Testit” hakemistoon ja kirjoitin tekstitiedostoon seuraavat asiat:
“#!/bin/bash” lisätty siksi että kyseistä koodia voitaisiin ajaa shell skriptinä kansiosta. ( tämä lisäys oli omaa harjoittelua skripteihin liittyen )
Lisäsin tiedostoon oikeuden suorittaa kaikilla käyttäjillä:
Chmod lisää oikeuksia, ja “x” on oikeus suorittaa.
Ensin testasin että koodi toimii kansiossa:
Toimi oikein eli pystyin kopioimaan koodin /usr/local/bin kansioon. Tiedoston kopiointi vaati sudo oikeudet.
Cd siksi että siirryin kotihakemistoon testaamaan toimiiko koodi.
Skripti ja koodi toimi oikein !
Jotta pystyin testaamaan PHP koodia selaimessa täytyi ensin asentaa apache. Asennus onnistui samalla tavalla kuin viimeviikon tehtävissä, ohjeet löytyvät täältä :
Apachen asennuksen jälkeen asensin PHP:n ja enabloin sen ajon weppisivulle.
Ohjeet löytyivät tähän myös viimeviikon tehtävistä joista linkki yllä.
Kotihakemistoon loin indexitiedoston ja sinne kirjoitin php koodin:
<?php
print “Hello World!”;
?>
Seuraavaksi katsoin selaimella localhost/~xubuntu ja sivu näytti vastaavalta :
Koodi toimi oikein !