Palvelintenhallinta läksyt viikko 6 – Caius Juvonen

Tämän viikon läksyt ovat osa Tero Karvisen palvelintenhallintakurssia, jonka kurssisivu löytyy täältä läksyjen kera: http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/ . Sama linkki myös lopussa.

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ä.

Menin tuolla suositetulla CentOsilla. Ensin meidän tarvitsee mennä etsimään latauslinkki ja sitten asentaa se virtualboxiin laitteeksi. Olen myös kuvaillut tässä tehtävässä asennusta. Latauslinkki löytyy täältä (Lähde 1).

Kun olemme ladanneet .iso tiedoston, menemme virtulaboxiin ja lisäämme uuden laitteen. Eli, click new. Seuraavassa galleriassa on parit kuvat asennusprosessista.

Eli siis ensin valitsemme käyttöjärjestelmäksi Centos, sen jälkeen päätämme muistin määrän (itse tykkään tuosta 4096MB ram muistinmäärästä), pari hard disk asetusta ja ihan viimeiseksi hard diskin tila. Ei tähän tarvitse tuota 8GB enempää. Noissa kuvissa siis omat asetukseni.

Sitten ei tarvitse mitään muuta kuin käynnistää tämä uusi virtuaalikone ja valita oikea .iso tiedosto (eli se jonka juuri latasimme).

Tuon jälkeen painamme vain start ja järjestelmän pitäisi olla ready to go. Asennuksen aikana tapasimme pienen ongelman:

Eli tarvitsemme itseasiassa enemmän kuin 8 GB tilaa. No, loin vain uuden virtuaalikoneen samalla tavalla kuin aiemmassa kohdassa mutta tällä kertaa lisäsin 20 GB levytilaa. Ehkä hieman overkill, mutta koneellani on paljon levytilaa, joten ei se haittaakkaan. Pari muutakin asetusta mitkä halusin asettaa kunnolla itse käyttöjärjestelmän asennuksen yhteydessä, tässä kuva niistä:

Muutin defaulteista vain time&date suomen ajaksi ja keyboard layoutin suomalaiseksi myös, sekä muutin software selectionin workstationiksi (default oli server GUI). Kaikki nuo muut asetukset olivat default asetuksia. Tuon jälkeen vain painamme “Begin Installation” nappia ja asennus alkaa. Luomme myös käyttäjän ja asetamme root salasanan.

Nyt voimme finishata asennuksen. Pienimuotoinen ongelma: centos yrittää asentaa asennuksen jälkeen itseään uudestaan, jota emme tietysti halua. Olin hetken jumissa tässä kohtaa, mutta pystyin googlaamaan vastauksen, ja löysin artikkelin jossa mainittiin sama ongelma (Lähde 2). Meidän pitää unmountata installation diski, ja resetoida virtuaalikone. Lähteessä tarkemmat ohjeet.

Tämän jälkeen kone lähti toimimaan, ja pääsin kirjautumaankin heti kun olin hyväksynyt lisenssin. Halusin myös tälle koneelle guest additions, mutta se ei ollut aivan yhtä helppoa kuin mitä olin ajatellut. Käytin taas erästä toista artikkelia lähteenä sen tekemisessä (Lähde 3). Näitä komentoja ei kuitenkaan pystynyt tekemään ilman root-oikeuksia, joten lisäsin myös peruskäyttäjäni sudoers listaan, joka ei myöskään ollut yhtä helppoa kuin mitä luulin. Käytin siihen tätä lähdettä (lähde 4).

Ainut mitä tuosta artikkelista kuitenkin tein, olivat kyseiset komennot:

su
usermod -aG wheel Caius

Tuossa vain siis menimme ensin root käyttäjälle komennolla su, ja sen jälkeen lisäsin peruskäyttäjän ryhmään “wheel” jolla on sudo-oikeudet defaulttina. Tämän jälkeen pystyimme käyttämään sudoa peruskäyttäjällä.

Seuraavaksi käytin tuota lähde 3 eli guest additions ohjetta. Käytin kyseisiä komentoja:

sudo dnf install epel-release

sudo install dkms kernel-devel kernel-headers gcc make bzip2 perl elfutils-libelf-devel

sudo dnf update kernel-*

Tämän jälkeen laitteelle reboot. Rebootin jälkeen tarkistetaan että versiot ovat oikein:

Hyvältä näyttää, eli matchaavat. Lopuksi mennään virtualboxissa devices -> insert guest additions CD image -> run. Nyt pitäisi toimia, ja meillä on full screen centos käytössä.

Ensinnäkin asennetaan salt-orja koneelle jotta saamme sen osaksi orjiamme. Käytin tähän lähdettä 5, eli saltstackin omaa ohjetta. Tarvittavat komennot ovat tässä:

sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el8.noarch.rpm

sudo yum clean expire-cache

sudo yum install salt-minion -y 

Tämän jälkeen meidän tarvitsee vain yhdistää tämä orja mestariin. Muokataan tiedostoa /etc/salt/minion ja lisätään sinne seuraavat linet (tai tarkemminkin, otetaan # pois):

master: 10.0.2.5
id: centos_orja

Tallenettuani nämä muutokset suljin ja uudelleenkäynnistin virtuaalikoneen, sillä tämä virtuaalikone ei myöskään ole oikeassa verkossa.

Kaikki muut koneet ovat tuossa natnetworkissa, joten lisäsin myös tämän siihen (muutenhan minioni ei voi yhdistää mestariin!). Tämän jälkeen uudelleenkäynnistys ja katsotaan mikä tilanne on mestarilla:

Eli centos orjamme haluaa nyt liittyä mukaan. Voimme liittää sen komennolla “sudo salt-key -A” joka hyväksyy kaikki unaccepted avaimet.

Vielä varmistus:

Centos_orja on nyt liitetty osaksi orjaverkkoamme.

b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.

Meidän ainut eri levityspaketin orja on tuo juuri lisätty centos_orja, joten tehdään tämä komennolla

sudo salt 'centos_orja' grains.items

Tuolla saamme siis juuri kyseiseltä orjalta kysyttyä sen grains.items. Saamme pitkän listan eri asioita, mutta tässä kuvakaappaus muutamasta:

grains.items siis meille tiedottaa ihan oikein että kyseessä on redhat systeemi, ja että centos on kyseessä. Saimme siis paljon muutakin tietoa, mutta sitä ei voi kaikkea laittaa yhteen kuvakaappaukseen ja eipä se muutenkaan mitenkään erityisen mielenkiintoista olisi.

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.

Olen tehnyt tilan joka tekee jo tämän pyydetyn asian, joten tulen käyttämään sitä tämän tehtävän kanssa. Kyseinen tila luotiin viime viikon läksyissä, linkki tässä (Lähde 6). Siitä kuitenkin puuttuu osfinger, joten lisään sen nopeasti:

Kirjoitin sen siis tuohon viimeiselle linelle. Save ja exit, ja seuraavaksi lisäämme tämän tilan tuolle uudelle centos orjallemme.

Tuollaiselta meidän top.sls tiedosto siis nyt näyttää. Etäorjalla on eniten noita tiloja, mutta emme tarvitse mitään muuta tälle centos_orjalle paitsi motd_tehtävä:n. Save&exit, ja laitetaan tila päälle. Tämä onnistuu komennolla

sudo salt '*' state.apply

Vaikuttaa toimivan. Kokeillaan yhdistää komennolla “ssh Caius@10.0.2.4“.

Näyttäisi toimivan tahdotusti, ainakin tuossa lukee CentOS linux-8 :). Jos haluamme vielä varmistaa että siinä lukee jotain muuta, yhdistetään meidän toiselle orjalle.

Vaikuttaisi toimivan ihan tahdotusti. Saimme siis motd viestiin onnistuneesti laitettua tuon osfinger tiedon.

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.

Tässä tehtävässä pitää siis kokeilla muotteja eri levityspakettien avulla. Unohdin miten koodia generoitiin, joten katsoin ohjetta täältä (Lähde 7), eli otan tuosta mallia. Aloitetaan sillä että luon uuden kansion mestarille /srv/salt ja luon sinne init.sls tiedoston. Tältä oma init.sls tiedostoni näyttää:

Tuossa siis if lausekkeen avulla olemme tehneet niin että mikäli grains[‘os’] palauttaa CentOS niin teemme tiedoston /tmp/redhat ja jos jotain muuta niin teemme tiedoston /tmp/debian. Itse testitiedosto on myös aika simppeli.

Siinä on turhaa tekstiä ja sitten se kertoo mikä käyttöjärjestelmä koneella on. Tämä ihan selvennyksen vuoksi, siis. Seuraavaksi lisätään tila vain kahdelle orjallemme ja laitetaan state.apply. Tältä näyttää top.sls:

Uudet muutokset merkitty nuolilla. Sitten vain tuttu “sudo salt ‘*’ state.apply” ja katsotaan toimiiko.

Ei ainakaan tässä kohtaa mitään ongelmia. Tarkistetaan tilanne itse koneilta:

Kaikki toimii niinkuin pitää, eli käyttöjärjestelmästä riippuen tiedoston nimi muuttui, ja voimme tekstistäkin päätellä mitkä käyttöjärjestelmät ovat kyseessä.

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.

Lähestyn tätä tehtävää hyvin samanlaisella tavalla kuin aiempaa, eli generoimme koodia init.sls tilassa ja saamme sen avulla kaksi eri tulosta käyttöjärjestelmästä riippuen. Katsotaan miltä init.sls näyttää tällä kertaa:

Aika samanlainen kuin viime kohdassa. Hieman olen muuttanut, sillä emme tee samaa asiaa tällä kertaa, vaikka tässä onkin sama idea. Eli jos kyseessä on CentOS niin se asentaa httpd paketin, ja jos kyseessä on jotain muuta, se asentaa apache2-paketin. Top.sls tiedosto:

Taas merkitsin mitä lisäsin. Nyt vain “sudo salt ‘*’ state.apply“. Toivotaan että kaikki menee hyvin!

Ei virheitä, mutta mennään vielä tarkistamaan kummallakin koneella että oikeat jutut on asennettu. Mennään ensin centos masiinalle ja pistetään httpd päälle:

Ei virheitä, entäs miltä localhost näyttää?

Vaikuttaa toimivalta, eli centos pystyimme ainakin asentamaan apache webserverin onnistuneesti. Käydään vielä katsomassa ubuntulaite. Ei virheitä apache2 käynnistyksessä, joka on hyvä:

Entäs localhost?

Hups, olen tainut jättää default webpagen hieman erilaiseksi aiemmasta tehtävästä… No, ei se haittaa, tarkistetaan apache2 komennolla “sudo systemctl status apache2“.

On päällä ja asennettuna, eli toimii tahdotusti. Olemme nyt pystyneet asentamaan kaksi eri pakettia käyttöjärjestelmästä riippuen orjilemme.

Konfiguroin tätä vielä hieman niin, että default web-page muuttuu järjestelmän perusteella. Lisätään tämä init.sls tiedostoon:

Muutokset merkitty punaisella. Meidän webbisivu siis muuttuu käyttöjärjestelmän perusteella. Tehdään vielä nuo tarvittavat muottitiedostot:

Kaksi aika erittäin simppeliä nettisivua siis, niillä ei pitäisi olla mitään paitsi tuo yksi lause. Tehdään state.apply.

Saimme näköjään virheen. En ole täysin varma mikä virhe tuo on, mutta kokeilen tätä:

Tein siis kaksi if statementtiä yhden sijaan. Katsotaan muuttiko tämä mitään.

Ei muuttanut, saimme silti saman virheen. Tuo whitespace ongelma ei liity tähän, vaan tuo on typo jonka onnistuin tekemään tuossa samalla. Mutta sitten huomasin että meillähän on kyseessä vain simppeli virhe tiedostossa, nimittäin file.managed: alla ei lue oikein – source: salt:// vaan pelkkä salt://. Korjataan virhe:

Kokeilin samalla tuota ensimmäistä versiota, koska se oli mielestäni paljon siistimpi. State.apply ja kaikki toimii. Tarkistetaan ovatko sivustot muuttuneet:

Ääkköset eivät toimi ubuntulla, mutta kaikki muu kyllä, eli saimme eri käyttöjärjestelmille eli default webbisivut.

Lähteet:

Lähde 1: http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

Lähde 2: https://linuxhint.com/install_centos8_virtualbox/

Lähde 3: https://kifarunix.com/install-virtualbox-guest-additions-on-centos-8/

Lähde 4: https://www.rosehosting.com/blog/how-to-create-a-sudo-user-on-centos-7/

Lähde 5: https://repo.saltstack.com/#rhel

Lähde 6: https://caiusinfo.data.blog/2020/05/05/palvelintenhallinta-laksyt-viikko-5-caius-juvonen/

Lähde 7: http://terokarvinen.com/2018/configure-windows-and-linux-with-salt-jinja-if-else-and-grains

Leave a comment

Design a site like this with WordPress.com
Get started