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.
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ä:
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
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.
Itse asiassa tämä WordPress muutti myös oikean lainausmerkin vääräksi tuossa kommentissani, joten onneksi kuvasin sen myös eksaktilla sijainnilla Unicodessa. Kyseessä on WordPressin oletusasetus, joka kannattaa muuttaa blogeissa, jotka käsittelevät ohjelmointia tai konfigurointia.
http://www.ironpaper.com/webintel/articles/fix-wordpress-quotes-by-displaying-straight-quotation-marks/