Palvelinten hallinta – Puppetin perusteet

Tehtävänanto:

h1. Tee Puppet-moduli, joka käyttää useampaa eri tyyppistä resurssia (esim. file ja package).
Bonus: asenna ja konfiguroi jokin palvelu package-file-service tyylillä.
Tehtävien ohje otettu: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016

Harjoituksessa käytetty laitteisto/ohjelmisto:

  • 16GB Kingston DataTraveler 100 G3 USB 3.0 muistitikku
  • Tietokone (Asus Z170-A, i7-6700K , 16GB DDR4 3200MHz, Evga 1070 sc)
  • Oheishärpäkkeet
  • Xubuntu 16.04.1 LTS

Alustavat valmistelut:

Seuraavat toimet suoritan aina, kun alan tekemään linux-harjoitusten eri osioita.
Boottasin Xubuntu-livetikulle valitsemalla USB-muistitikun käynnistyksen yhteydessä bootattavaksi levyksi.  Kun kysyttiin haluanko testata Xubuntua vaiko asentaa sen, valitsin vaihtoehdon “Try Xubuntu without installing“. Lyhyen latauksen päästä pääsin työpöydälle.
Yhdistin heti kotini langattomaan verkkoon työpöydän oikeasta yläkulmasta sekä muutin näppäimmistön layoutin suomiversioksi komennolla terminaalin komennolla “$ setxkbmap fi”.
Seuraavaksi syötin komennon “$ sudo apt-get update“. Kyseinen komento päivittää pakettivarastot, ja se kannattaa suorittaa aina ennen kuin hyödyntää paketinhallintaa mihinkään.

Puppet moduuli

Suoritin seuraavan harjoituksen kotikoneellani tiistaina 25. 10. 2016. Aloitin asentamalla Puppetin komennolla $ sudo apt-get install puppet. Tämän jälkeen navigoin kansioon $ cd /etc/puppet/modules/.

xubuntu@xubuntu:/etc/puppet/modules$ pwd
/etc/puppet/modules

Kyseiseen kansioon tein uuden kansion nimeltä “testimoduuli” komennolla $ sudo mkdir testimoduuli. Testimoduuli-kansioon tein kansion nimeltä manifests: $ sudo mkdir manifests, johon tein sudoeditillä init.pp nimisen tekstitiedoston, joka tulee sitten sisältämään moduulini.
$ sudoedit init.pp
Tein seuraavanlaisen moduulin:

class testimoduuli {
        package { vlc:
                ensure => “installed”,
                allowcdrom => “true”,
        }
        file {“/tmp/testimoduuli”:
                content => “markuksen puppet testailua\n”,
        }
}

Kyseisen moduulin tarkoituksena on siis varmistaa, että vlc-mediaplayer on asennettuna, sekä tehdä tiedosto “testimoduuli”, jossa lukee “markuksen puppet testailua”.
Koska työskentelen livetikulla, lisäsin moduuliin myös “allowcdrom => “true”,“.
Tallensin tiedoston, ja ajoin sen terminaalin komennolla $ sudo puppet apply -e ‘class {testimoduuli:}’
Vastauksena sain:

Error: Could not match “installed”, at /etc/puppet/modules/testimoduuli/manifests/init.pp:4 on node xubuntu
Error: Could not match “installed”, at /etc/puppet/modules/testimoduuli/manifests/init.pp:4 on node xubuntu

?
Yritin testata tiedoston toimivuutta komennolla $ cat /tmp/testimoduuli, mutta:

cat: /tmp/testimoduuli: No such file or directory

Poistin file-osuuden moduulista kokonaan, tallensin ja kokeilin uudelleen, mutta sain silti saman “Could not match “installed”…”-errorin.
Kokeilin poistaa lainausmerkit “installed” ja “true” kohdista. Tallensin ja laitoin taas komennon $ sudo puppet apply -e ‘class {testimoduuli:}’. Vastaukseksi sain:

xubuntu@xubuntu:/etc/puppet/modules/testimoduuli/manifests$ sudo puppet apply -e 'class {testimoduuli:}'
Notice: Compiled catalog for xubuntu in environment production in 0.16 seconds
Notice: /Stage[main]/Testimoduuli/Package[vlc]/ensure: ensure changed 'purged' to 'present'
Notice: Finished catalog run in 20.13 seconds

Vlc latautui, eli moduuli toimi, kun otti lainausmerkit pois.
screenshot_2016-10-26_19-13-56
Mielenkiinnosta kokeilin laittaa lainausmerkit takaisin, ja suoritin taas komennon, johon sain vastaukseksi:

xubuntu@xubuntu:/etc/puppet/modules/testimoduuli/manifests$ sudo puppet apply -e 'class {testimoduuli:}'
Notice: Compiled catalog for xubuntu in environment production in 0.17 seconds
Notice: Finished catalog run in 0.03 seconds

En ymmärrä, miksi moduuli toimii nyt lainausmerkkien kanssa, kun ei aiemmin toiminut. Mitään muuta muutosta en ole moduuliin tehnyt.
No, moduulin package osio toimii nyt, joten lisäsin file-osion takaisin moduuliin ja tallensin. Nyt sain:

Error: Could not match “/tmp/testimoduuli”: at /etc/puppet/modules/testimoduuli/manifests/init.pp:9 on node xubuntu
Error: Could not match “/tmp/testimoduuli”: at /etc/puppet/modules/testimoduuli/manifests/init.pp:9 on node xubuntu

Noh, kokeilinpa nyt poistaa lainausmerkit filen sijainnista, sekä content osiosta. Tallensin, suoritin komennon $ sudo puppet apply -e ‘class {testimoduuli:}’. Vastaukseksi sain:

xubuntu@xubuntu:/etc/puppet/modules/testimoduuli/manifests$ sudo puppet apply -e 'class {testimoduuli:}'
Notice: Compiled catalog for xubuntu in environment production in 0.22 seconds
Notice: /Stage[main]/Testimoduuli/File[/tmp/testimoduuli]/ensure: defined content as '{md5}fa1c20111ec96096de57b3a1bc930d72'
Notice: Finished catalog run in 0.03 seconds

Eli nyt taas toimikin? Lisäsin lainausmerkit takaisin file sekä content kohtiin ja tallensin.
Kokeillaanpa $ cat /tmp/testimoduuli

xubuntu@xubuntu:/etc/puppet/modules/testimoduuli/manifests$ cat /tmp/testimoduuli
markuksen puppet testailua

Toimii. Lopullinen moduuli näytti siis tältä:
screenshot_2016-10-26_19-25-13
Eli täsmälleen samannäköinen kuin ensimmäinen yritys, joka ei toiminut. Mitään muutosta ei ole tapahtunut, vaan ainoastaan poistin lainausmerkit, tallensin, lisäsin lainausmerkit ja tallensin. Sitten toimi.

Yhteenveto

Tässä harjoituksessa luotiin Puppet moduuli, joka varmistaa, että Vlc-mediaplayer on koneella asennettuna ja luo tekstitiedoston nimeltä “testimoduuli” /tmp/-kansioon. Moduuli kettuili vastaan koko harjoituksen ajan. Se alkoi toimimaan vasta pienen kikkailun jälkeen, jossa ei muutenkaan ollut mitään järkeä.

Lähteet:

Harjoituksen ohjeet haettu Tero Karvisen verkkosivuilta.
URL: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Markus Pyhäranta

2 thoughts on “Palvelinten hallinta – Puppetin perusteet”

  1. Lainausmerkeillä on eroa. Ensimmäisessä versiossa käytössäsi on lainausmerkit “ (left double quotation mark U+201C) ja ” (right double quotation mark U+201D). Konfiguraatiotiedostoissa lainausmerkiksi kelpaa ainoastaan ASCII ” (quotation mark U+0022). Tämän vuoksi ensimmäinen yritys antoi virheilmoituksia.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top