Tehtävän tekemiseen meni noin 10h kolmena eri päivänä.
Tavoitat Saltilla jo monet eri tyyppiset koneet. Vaikka läppärit vaihtavat osoitetta, jäävät tulimuurin ja NAT:n taakse, pystyt ohjaamaan niitä masterilla. Nyt tarkastellaan eri levityspakettien hallintaa.
a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille. CentOS on hyvä vaihtoehto. Voit esimerkiksi asentaa CentOS:n VirtualBoxiin ja tehdä koneiden välille virtuaaliverkon. Jos käytät Vagrantia, ’cent.vm.box = ”centos/7″’ on kätevä.
b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.
c) Tee päivän viesti (motd), jossa koneen tyyppi tulee grains osfinger -muuttujasta. Kokeile, että saat eri levityspaketeilla eri tuloksen. Voit hyödyntää aiemmin tekemääsi motd:ia.
d) Tee tila, joka tekee RedHat-perheellä (esim. CentOS) tiedoston /tmp/redhat ja Debian-perheellä (esim Ubuntu) tiedoston /tmp/debian. Voit käyttää mitä vain eri perheiden levityspaketteja.
d) Tee tila, joka asentaa ja konfiguroi Apachen kahteen erilaiseen järjestelmään, esim. CentOS ja Ubuntu. Paketin nimi on CentOS:ssa ”httpd”. Käytä Salt-koodin generointia muoteilla.
e) Vapaaehtoinen: Tee tila, joka asentaa nginx kahteen erilaiseen levityspakettiin.
d) Vapaaehtoinen, vaikeampi: Kokeile Salt:ia Windowsilla.
Tehtävä a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille. CentOS on hyvä vaihtoehto. Voit esimerkiksi asentaa CentOS:n VirtualBoxiin ja tehdä koneiden välille virtuaaliverkon. Jos käytät Vagrantia, ’cent.vm.box = ”centos/7″’ on kätevä.
Asensin toiseksi levityspaketiksi Centos 7 ja asensin sen lähestulkoon samanlailla, kuin xUbuntunkin. Latasin ISO tiedoston Centos sivuilta.
Ja latasimme centille guest additionsit ja käytimme lähteenä VirtualBox Guest Additions on Fedora 31/30, CentOS/RHEL 8/7/6/5 ja saimme guest additionit laitettua ohjeiden mukaan.

Tehtävä b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.
Aloitan ensiksi lataamalla päivitykset ja lataamalla salt-minionin centille komennolla
slave$ sudo yum update
slave$ sudo yum install salt-minion
Kun olin saanut minionin ladattua katsoin masterilta IP osoitteen komennolla
hostname -I
Tämän jälkeen kävin lisäämässä IP osoitteen ja orjan nimen CentOsin orjalle kohdista
master : *IP-osoite*
id: centorja
slave$ sudo nano /etc/salt/minion
Lisäyksien jälkeen kävin käynnistämässä salt-minionin uudelleen komennolla
slave$ sudo systemctl restart salt-minion
Lisäyksien jälkeen kävin hyväksymässä masterilla uuden orjan, jonka loin juuri CentOsilla ja se löytyi unaccepted keys kohdasta ja painoin y ja näin sain orjan hyväksyttyä.
master$ sudo salt-key -A
Seuraavalla komennolla näämme meidän orjamme
master$ sudo salt '*' cmd.run 'whoami'

Uuden orjan asennuksen jälkeen pääsen keräämään grains tietoja eri perheiden levityspaketeista. Aloitin luomalla /srv/salt kansioon uuden kansion nimeltä ”yksitotuus” komennolla
master$ sudo mkdir yksitotuus
Kansion luonnin jälkeen aloitin luomalla init.sls ja grains.txt tiedostot yksitotuus kansion sisälle.


Kun tiedostot oli tehty pystyin lähtemään ajamaan tietoja minioneille
master$ sudo salt '*' state.apply yksitotuus
Käytän state.apply komentoa, koska en ole luonut top.sls tiedostoa, jolla voisin ajaa nämä minioneille sudo salt '*' state.highstate komennolla.

Ja ajettuani state.apply komennon kaikki meni hyvin ja ne meni läpi. Nyt voin lähteä kokeilemaan ja katsomaan saanko grains tietoja eri orjilta. Tämän kokeilin komennolla
master$ sudo salt '*' cmd.run 'cat /tmp/grains.txt'

Ajettuani komennon totesin, että testi toimi ja sain kerättyä haluamani grains tiedot orjilta, jotka ovat eri Os familystä.
Lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains
Tehtävä c) Tee päivän viesti (motd), jossa koneen tyyppi tulee grains osfinger -muuttujasta. Kokeile, että saat eri levityspaketeilla eri tuloksen. Voit hyödyntää aiemmin tekemääsi motd:ia.
Aloitin tehtävän tekemisen ja loin /srv/salt kansioon uuden kansion nimeltä motdtemplate ja sinne tiedostot init.sls ja motd. Kävin myös tarkastamassa masterilla, että etc kansiossa oli myös motd tiedosto olemassa, jos sitä ei ole sen voi luoda sinne.


Näiden jälkeen ajoin state.apply komennon
master$ sudo salt '*' state.apply motdtemplate


Ja huomasin, että komennot menivät läpi ongelmitta. Sitten kävin vielä kokeilemassa ssh yhteydellä ensiksi ubuntu orjan ja sen jälkeen cenos orjan.


Jostain syystä en päässyt SSH yhteydellä Centosiin sisään ja vastasi, että ”Connection timed out” yritin selvitellä googlaamalla mikä olisi ongelmana, mutta en saanut yhteyttä siltikään toimimaan, vaikka ajot menivät kuitenkin centos orjalleni perille.
Lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
https://phoenixnap.com/kb/how-to-enable-ssh-centos-7
Tehtävä d) Tee tila, joka tekee RedHat-perheellä (esim. CentOS) tiedoston /tmp/redhat ja Debian-perheellä (esim Ubuntu) tiedoston /tmp/debian. Voit käyttää mitä vain eri perheiden levityspaketteja.
Aloitin tehtävän luomalla itselleni /salt/srv kansioon uuden kansion pillar ja sinne tiedoston init.sls. init.sls tiedostoon tein jinja/yaml koodin, jolla pystyin luomaan tiedoston centosin /tmp kansiion RedHat tiedoston ja ubuntun /tmp kansioon Debian tiedoston. Kirjoitin init.sls tiedostoon seuraavan koodin.

Kirjoitettuani koodin lähdin ajamaan tiedostoa eteenpäin
master$ sudo salt '*' state.apply pillar
Ja sain vastaukseksi onnistuneen tilan, joka loi tiedostot eri perheiden tmp kansioon.


Ja testin jälkeen kävin vielä tarkistamassa, että onko tiedostot luotu sinne minne halusinkin, että ne tulee.


Ja kumpaankin oli tullut kansiot sillä nimellä millä halusinkin, että ne tulee. Joten totesin, että tehtävä suoritettu oikein.
Lähde: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
JINJA: https://docs.saltstack.com/en/getstarted/config/jinja.html
UNDERSTANDING JINJA https://docs.saltstack.com/en/latest/topics/jinja/index.html#jinja-in-states
http://terokarvinen.com
Tehtävä e) Tee tila, joka asentaa ja konfiguroi Apachen kahteen erilaiseen järjestelmään, esim. CentOS ja Ubuntu. Paketin nimi on CentOS:ssa ”httpd”. Käytä Salt-koodin generointia muoteilla.
Aloitin aktivoimalla CentOsille httpd webserverin. Aloitetaan lataamalla Centosille httpd
sudo yum install -y httpd
ja tämän jälkeen startataan httpd
sudo systemctl start httpd sudo systemctl status httpd (Katsoin, että palvelu on päällä Active)
Kävin myös avaamassa portit httpd, koska tcp 80 käyttää normaalia liikennettä, kun taas tcp 443 käyttää kryptattua liikennettä.
sudo firewall-cmd ––permanent ––add-port=80/tcp
sudo firewall-cmd ––permanent ––add-port=443/tcp
sudo firewall-cmd ––reload
Sitten kävin testaamassa localhostilla, että sivu toimii.

Aktivoinnin jälkeen poistin Httpd webbiserverin centokselta ja siirryin masterille (xubuntu) ja aloitan automatisoinnin.
Loin /srv/salt kansioon apacheweb kansion ja sinne init.sls tiedoston, joka näytti seuraavalta

Tämän jälkeen ajoin tilan ja tilat menivät läpi kummallekkin, mutta minulla oli jo ubuntulle valmiiksi asennettu apache2, joten tilaan tuli ”packages are already installed”
master$ sudo salt '*' state.apply apacheweb


Tämän jälkeen jouduin lataaman uuden virtuaalikoneen , koska jostain syystä apacheni ei toiminut, joten latasin uuteen ubuntu koneesee minionin ja yhdistin sen masteriin, jotta pääsin jatkamaan asennusta. Ajoin tilat sisään ja ne onnistui kuten pitikin.
Lisäsin init.sls tiedostoon vielä servic.running, jotta centosilla httpd pysyy käynnissä.
{{ webserver }}.service:
service.running

Tämän jälkeen lähdin muokkaamaan init.sls tiedostoa, jonne lisäsin pilarit jotka ottavat apacheweb kansioon luomani centos ja ubuntu tiedostot, jotka haluan näkyvän nettisivullani ja tiedosto näytti loppujen lopuksi tältä

Luonnin jälkeen ajoin tiedostot state.apply komennolla ja ne menivät läpi.


Testien jälkeen oli aika kokeilla näkyvätkö sivuni webissä.


Ja haluamani tekstit näkyvät nettisivullani, joten oletin tehtävän olevan suoritettu oikealla tavalla.
Lähde: http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains
https://phoenixnap.com/kb/install-apache-on-centos-7
http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
Lähteet: http://terokarvinen.com/
How to enable ssh centos 7: https://phoenixnap.com/kb/how-to-enable-ssh-centos-7
JINJA: https://docs.saltstack.com/en/getstarted/config/jinja.html
Understanding Jinja: https://docs.saltstack.com/en/latest/topics/jinja/index.html#jinja-in-states
Configure windows and linux with salt Jinja if else and grains: http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains
Install apache on centos 7: https://phoenixnap.com/kb/install-apache-on-centos-7
Guestadditions centos 7: https://www.if-not-true-then-false.com/2010/install-virtualbox-guest-additions-on-fedora-centos-red-hat-rhel/
Configuration Managment Systems – Palvelinten Hallinta – Spring 2020 http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/