Viikkotehtävä 6(Palvelinten hallinta)

Etusivulle

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.

CentOs

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'

Cent ja Ubuntu orjat

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.

init.sls tiedoston sisältö
grains.txt tiedoston sisältö

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'

grains tiedot orjilta

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.

Init.sls tiedosto
motd tiedosto

Näiden jälkeen ajoin state.apply komennon

master$ sudo salt '*' state.apply motdtemplate

Ubuntu orja
Kenos orja

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.

SSH yhteys ubuntu orjalle ja motd grains tiedot
Centos ssh kirjautumis yritys

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.

init.sls tiedoston sisältö

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.

Debian
CentOs

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

Debian perheen tiedosto /tmp kansiossa
RedHat perheen tiedosto /tmp kansiossa

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.

Centos httpd aloitussivu

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

init.sls

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

Ubuntu (Debian)
Centos (RedHat)

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ä

init.sls

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

Ubuntu
Centos

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

Ubuntu
Centos

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/

Etusivulle

Jätä kommentti

Design a site like this with WordPress.com
Aloitus