Muottien tekoa ja moduulien asentamista
Tein tehtävän kotona pöytäkoneellani, jossa oli mm. Intel i5-3570K prosessori, 8GB RAM-muistia, Asus GTX 1060 (6GB) näytönohjain ja käyttöjärjestelmänä Win 10. Jatkoin tehtävien tekemistä VirtualBoxissa (versio 6.1.4) luomillani virtuaalikoneilla, joita käytin edellisissä harjoituksissa.
Tehtävänanto kokonaisuudessaan: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
Aloitin tehtävän 5.5.2020 klo 18:00 (UTC +3)
Pähkäilin ensin itse melko pitkään miten tehtävä ratkaistaan. Koitin googletella ohjeita, mutta en löytänyt kummoisia ohjeita. Lopulta päädyin selailemaan Tero Karvisen sivuja, sekä kurssilaisten tehtäväratkaisuja, kuten tätä Aki Ronkaisen sivua. Sain sivuilta hyviä vinkkejä, joiden avulla lähdin ratkaisemaan tehtävää.
a) Hello templates! Tee muotilla esimerkkitiedosto, jossa on muuttujien (esim grains) arvoja.
Googletin, mitä arvoja grainsin avulla on saatavilla ja päädyin tälle sivustolle. Komento salt ’*’ grains.ls listaa grainsit. Päätin kokeilla tehdä templaten, joka näyttää orjakoneen id:n. Tein ensin masterille kansion:
sudo mkdir srv/salt/message/
Kansioon loin muotin:
sudoedit message
Muotin sisällöksi:
Tervetuloa!
Käyttämäsi koneen id on {{ grains['id'] }}
Loin kansioon myös init.sls tiedoston:
sudoedit init.sls
Init.sls sisällöksi:
/tmp/message:
file.managed:
- source: salt://message/message
- template: jinja
Kyseinen tila luo muotista message -tiedoston orjalle kansioon /tmp/ (tiedostoon tallentuu orjan id). Valitsin kyseisen kansion, koska arvelin sen olevan tarkoitettu väliaikaisille tiedostoille.
Ajoin tilan testatakseni sitä:
sudo salt '*' state.apply message
Sain ilmoituksen onnistuneesta suorituksesta:

Kävin orjalla testaamassa templaten toimivuuden:
cat /tmp/message
Template näytti viestin ja orjan id:n kuten oli tarkoituskin:

b) Message of the Day. Sisäänkirjautuessa näytetään päivän viesti. Lisää päivän viestiin tietoa ympäristöstä käyttäen muotteja. Sopiva tiedosto on /etc/motd.
Tarkoituksena oli luoda templatea käyttäen orjalle viesti, joka näytetään kirjauduttaessa sisään ssh:lla.
Loin masterille uuden kansion:
sudo mkdir /srv/salt/motd
Kansioon tiedosto (muotti) nimeltä motd:
sudoedit motd
Tiedoston sisällöksi:
Tervehdys!
Koneen id: {{ grains['id'] }}
Käyttöjärjestelmä: {{ grains['osfullname'] }}
Suorittimen malli: {{ grains['cpu_model'] }}
Samaan kansioon init.sls:
sudoedit init.sls
Init.sls sisällöksi:
/etc/motd:
file.managed:
- source: salt://motd/motd
- template: jinja
Ajoin tilan masterilla:
sudo salt '*' state.apply motd
Tila ajettiin onnistuneesti:

Kävin orjalla tarkistamassa, näkyykö motd kun kirjaudun ssh:lla ja näkyihän se. Motd-tiedoston rivit lisättiin default-viestin loppuun:

c) Bash. Tee bashiin asetuksia Saltilla. Ensin käsin, vasta toimivaa automatisoidaan. Muista testata lopputulos käyttäjän näkökulmasta.
Googletin aiheesta ja löysin pari sivustoa, joilla on neuvottu promptin säätämistä:
https://vitux.com/how-to-customize-ubuntu-bash-prompt/
https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
Testailin ensin masterilla komennoilla värien vaihtamista:

Sivustoilla oli mainittu, että asetustiedosto on sijainnissa /home/käyttäjä/.bashrc. Kävin kurkkaamassa tiedoston sisältöä. Unohdin ottaa kuvan rivistä, jota muutin, mutta muutos näkyy myös myöhemmin ajetussa tilatulosteessa. Muutettu numero alleviivattu keltaisella:

Numero 32 on vihreä väri, jonka siis muutin violetiksi, eli numeroksi 35.
Tein tilalle kansion:
sudo mkdir /srv/salt/bash/
Kansioon init.sls tiedoston:
sudoedit init.sls
Sisällöksi:
/home/slave/.bashrc:
file.managed:
- source: salt://bash/.bashrc
Tässä on vain se sama ongelma, jonka takia minulla oli vaikeuksia aiemmissa harjoituksissa olleiden asetustiedostojen kanssa. Asetustiedosto on käyttäjän kotihakemistossa, ja käyttäjänimi ei ole kaikilla orjilla vakio. Laitoin yhden orjan nimen polkuun, joten tila toimii vain kyseisellä orjalla. Katselin muiden kurssilaisten tehtäväratkaisuja, ja he olivat ratkaisseet tämän aika pitkälti samalla tavalla.
Kopioin masterilla asetustiedoston tilakansioon:
sudo cp /home/master/.bashrc /srv/salt/bash/
Ajoin tilan komennolla:
sudo salt '*' state.apply bash
Sain ilmoituksen onnistuneesta rivimuutoksesta:

Kävin orjalla käynnistämässä terminaalin uudestaan, ja promptin väri oli vaihtunut:

d) Nginx. Tee nginx-weppipalvelimeen asetuksia Saltilla. Voit esimerkiksi tehdä uuden site:n, niin että etusivu vaihtuu.
Halusin muokata Nginxin defaultsivua. Kirjoitin ensin masterin selaimeen localhost ja huomasin, että minulla oli Apache asennettuna ja joku Apachelle luotu testisi tehtynä. Poisti ne, ja tarkistin vielä, ettei selaimessa annettu localhost avaa sivua.
Asensin masterille Nginxin:
sudo apt-get install -y nginx
Annoin varmuuden vuoksi komennon systemctl restart gninx, sillä en muistanut pitikö palvelin käynnistää uusiksi asentamisen jälkeen. Avasin selaimen ja kirjoitin osoiteriville localhost, minkä jälkeen Gninxin oletussivu avautui. Unohdin ottaa oletussivusta screenshotin.
Menin katsomaan, olisiko oletussivu samassa sijainnissa kuin Apachen oletussivu oli aiemmissa harjoituksissa. Sijainnista /var/www/html/ löytyi index.gnix-debian.html, eli juuri se sivu jota etsinkin. Muokkasin sivua:
<!DOCTYPE html>
<html>
<head>
<title>Testaillaan...</title>
Testaillaan...
</html>
Kirjoitin jälleen selaimeen localhost, jolloin luomani testisivu avautui:

Tein masterilla tilalle uuden kansion:
sudo mkdir /srv/salt/nginx/
Kopioin testisivun kyseiseen kansioon:
sudo cp /var/www/html/index.nginx-debian.html /srv/salt/nginx/
Uudelleen nimesin kopioimani tiedoston testi.html -nimiseksi, minkä jälkeen tein nginx -kansioon init.sls tiedoston seuraavalla sisällöllä:
nginx:
pkg.installed
/var/www/html/index.nginx-debian.html:
file.managed:
-source: salt://nginx/testi.html
running:
service.running:
- name: nginx
Ajoin tilan masterilla komennolla:
sudo salt '*' state.apply nginx
Tilan suorittaminen onnistui lopun serviceä lukuunottamatta.

En tiennyt, mistä virhe saattoi johtua. Minulla oli orjalla Apache asennettuna, joten kävin varmuuden vuoksi pysäyttämässä sen. Olin unohtanut tehdä ennen ennen tilan ajoa testin orjan puolella (localhost selaimeen). Ajoin tilan uudeleen, jolloin servicen suorittaminen onnistui myös.

Minun olisi ollut hyvä testata vielä koko tilan ajaminen uudestaan ”puhtaalta pöydältä”, mutta se jäi tekemättä. Kävin kirjoittamassa orjakoneen selaimeen localhost, jolloin toivottu testisivu avautui.

Lopetin tehtävien tekemisen 6.5.2020 klo 2:20 (UTC +3). Tehtävien tekemiseen meni aikaa noin kahdeksan tuntia.
Lähteet
- http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
- https://vitux.com/how-to-customize-ubuntu-bash-prompt/
- https://linuxconfig.org/how-to-change-welcome-message-motd-on-ubuntu-18-04-server
- https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
- https://docs.saltstack.com/en/latest/topics/grains/
- http://terokarvinen.com/2018/make-a-million-of-those-jinja-templating-salt-states
- https://akronen.wordpress.com/2020/04/06/palvelinten-hallinta/4/
- Oppitunnit