Tehtävien tavoitteena oli testata yhtä totuutta eri käyttöjärjestelmillä. Tehtävien tekemiseen meni noin 9 tuntia kahtena eri päivänä.
Suoritan tehtävät omalla tietokoneellani (HP Pavillion 15) VirtualBoxin kautta Linuxin XUbuntu 18.04 käyttöjärjestelmällä, sekä tässä tehtävässä toisessa virtuaalikoneessa CentOS 7 käyttöjärjestelmällä.
Tehtävä on osa Tero Karvisen palvelimen hallinta kurssia keväällä 2020. Tehtävän anto löytyy osoitteesta: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/
a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille.
Valitsin Linux-levityspaketiksi CentOS 7. Latasin paketin täältä (http://isoredirect.centos.org/centos/7/isos/x86_64/)
Aloitin lataamalla CentOS 7 ISO -tiedoston, jonka jälkeen loin virtualboxiin uuden virtuaalikoneen CentOS:ksille. Latasin CentOS:sista GNOME desktop version. Ensin latasin vahingossa minimal version, joka aiheutti ongelmia sillä en saanut nettiä päälle ja tästä syystä yum komennon käyttäminen ei onnistunut.
Kun CentOS oli asentunut, aloitin asentamaan salt-minionia. Ensimmäiseksi enabloin EPEL repositoryn, joka laajentaa pakettien määrään CentOS:ksessa ja päivitin paketin tämän jälkeen komennoilla:
– sudo yum -y install epel-release
– sudo yum update
Tämän jälkeen asensin salt-minionin komennolla:
– sudo yum -y install salt-minion
Asennuksen jälkeen menin polkuun /etc/salt ja muokkasin tiedostoa minion. Masteriksi laitoin master koneeni IP-osoitteen 192.168.8.111 ja id:ksi CentOS. Kun muutokset oli tehty käynnistin salt-minionin uudelleen komennolla:
– sudo systemctl restart salt-minion
Siirryin tämän jälkeen master koneella ja tarkistin ensiksi oliko unaccepted key kohdassa CentOS avainta komennolla:
– sudo salt-key -L
Se oli siellä, joten hyväksyin avaimen komennolla:
– sudo salt-key -A
Viimeisenä testain minioneiden toimivuutta komennolla:
– sudo salt ‘*’ cmd.run ‘whoami’

b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.
Keräsin tietoja kahdesta eri orjasta. Toinen on janni ja toinen centOS. Keräsin tiedot komennoilla:
– sudo salt ‘centOS’ grains.items
– sudo salt ‘janni’ grains.items


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.
Hyödynsin aikaisempaan tekemääni motd tilaa (tehtävä5). En tehnyt muutoksia init.sls tilatiedostoon. Minulta puuttui edellisestä tiedostosta osfinger, joten tein tekstitiedostoon seuraavat muutokset:

Tämän jälkeen aktivoin tilan komennolla:
– sudo salt ‘*’ state.apply motd


Testasin motd viestien toimivuutta ssh yhteyksien avulla. Ensiksi otin yhteyttä CentOS:kseen komennolla:
– ssh centOS@IP-osoite ja kyseinen motd viesti tuli:

Kirjauduin seuraavaksi toiselle orjalle komennolla:
– ssh janni@IP-osoite -p 5556 ja kyseinen motd viesti tuli:

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.
Katsoin tähän mallia Teron ohjeista (http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains) sekä omista muistiinpanoistani tunnilta.
Aloitin luomalla /srv/salt hakemistoon kansion tiedostot ja tämän alapuolelle init.sls tilatiedoston. Tilatiedostoon kirjoitin koodin, joka lisää tiedoston /tmp/redhat mikäli käyttöjärjestelmä on CentOS ja muussa tapauksessa tiedoston /tmp/debian. Käytin myös template jinjaa avuksi. Tilatiedosto oli tämän näköinen:

Sen jälkeen loin polkuun /srv/salt/tiedostot tekstitiedoston nimeltä tiedosto.txt ja kirjoitin sen sisälle käyttöjärjestelmä grains tiedon. Tekstitiedosto näytti tältä:

Sitten aktivoin tilan komennolla:
– sudo salt ‘*’ state.apply tiedostot

Tila meni oikein läpi ja näytti tässä kohdassa hyvältä. Tämän jälkeen testasin vielä, että tiedostot löytyvät ja niiden sisältä löytyvät tarvittavar tiedot. Aloitin Ubuntusta ja kirjoitin komennon:
– cat /tmp/debian

Tämä toimi niinkuin pitikin. Kirjauduin tämän jälkeen ssh:lla CentOS virtuaalikoneelle ja laitoin komennon:
– cat /tmp/redhat

Tämäkin toimi oikein.
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.
Käytin käsinasennukseen apuna phoenixNAP:in asennusohjeita. (https://phoenixnap.com/kb/install-apache-on-centos-7) Aloitin asentamalla ensiksi httpd ohjelman käsin CentOS -käyttöjärjestelmälle komennolla:
– sudo yum install -y httpd
Jotta Apache toimii CentOS:ksella se täytyy ensin aktivoida. Aktivoin httpd servicen komennolla:
– sudo systemctl start httpd
Lisäksi avasin httpd tarvitsemat portit, sillä normaalissa asennuksessa CentOS on asetettu estämään liikenne Apacheen. Tein avaukset komennoilla:
– sudo firewall-cmd ––permanent ––add-port=80/tcp
– sudo firewall-cmd ––permanent ––add-port=443/tcp
– sudo firewall-cmd ––reload
Tämän jälkeen testasin verkossa, että testi sivu toimii ja poistin sitten asennuksen.

Aloitin tilan tekemisten luomalla apache kansion polkuun /srv/salt ja sen sisälle tila tiedoston init.sls. Ekaksi minulla oli siinä myös service osuus, mutt apache service on jostain syystä hajonnut master koneellani, enkä googlauksista huolimatta saanut sitä toimimaan. Asensin uuden Ubuntu virtuaalikoneen ja tein siitä minionin, jotta voin kokeilla apache2 asennusta Ubuntulle ilman että joudun asentamaan kaiken uudelleen. Tila tiedosto näytti tältä:

Ajoin tilan komennolla:
– sudo salt ‘*’ state.apply apache
Asennus meni molemmissa virtuaalikoneissa oikein lävitse.

Tämän jälkeen lisäsin service.running kohdan init.sls tiedostoon muodossa:
{{ webserver }}.service:
service.running
Tämä siksi, että CentOS ei käynnistä itse servicejä. Ajoin tilan uudelleen ja servicet menivät molemmat oikein käyntiin.

Viimeisenä halusin vielä muokata tilaa, niin että se luo molemmille verkkopalvelimille mukautetut index.html sivut. Tein ensiksi kaksi tiedostoa polkuun /srv/salt/apache, jonka olivat nimeltään centos ja ubuntu. Tekstiksi kirjoitin vain Ubuntu/CentOS nettisivu. Sitten lisäsin tekstitiedostoille arvon nettisivu ja koodin loppuu file.managed osuuden, joka lisää tiedostot /var/www/html/index.html sijaintiin.

Aktivoin taas tilan ja sen muutokset. Ne menivät läpi kummallakin käyttöjärjestelmällä.


Viimeisenä on vielä aika testata, että muutetut index.html tiedostot toimivat selaimessa. Avasin oman koneeni työpöydältä selaimen ja laitoin molempien virtuaalikoneiden IP-osoitteet. Molemmat toimivat oikein ja muutokset olivat tapahtuneet.


Lähteet:
Tero Karvinen
http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains
phoenixNAP
https://phoenixnap.com/kb/install-apache-on-centos-7