Teht3 (W45)
Tehtävänanto:
w45 läksy: Opiskele “Learning Puppet” luvut Templates, Parameterized Classes (Modules, Part Two) ja Defined Types. Kirjoita omia, aiheen kannalta olennaisia esimerkkiohjelmia, vähintään 1 kunkin luvun aiheesta. Tutustu Henrin ja Armensin blogiin, ja kirjoita oma moduli tai ohjelma valitsemasi artikkelin aiheesta.
(http://terokarvinen.com/2012/aikataulu-linuxin-keskitetty-hallinta-ict4tn011-2-puppet)
Kokoonpano:
HP EliteBook 2560p └── SanDisk Cruzer 32GB (USB 2.0) └── Xubuntu 12.10 32-bit
Templates
Tehdään moduli, joka käyttää templatea asentaakseen mumble-serverin kustomoidulla conf-tiedostolla.
Ensin tehdään modulille vaadittavat kansiot käyttämäämme modules-kansioon.
$ mkdir mumbleserver; mkdir mumbleserver/manifests; mkdir mumbleserver/templates
Luodaan modulissa tarvittavat tiedostot.
$ touch mumbleserver/manifests/init.pp ; touch mumbleserver/manifests/init.pp
Mumbleserver-modulin rakenne:
. └── mumbleserver ├── manifests │ └── init.pp └── templates └── mumble-server.ini.erb
Lisätään seuraava sisältö init.pp tiedostoon.
Kopioidaan /etc/mumble-server.ini templates kansioon.
$ cp /etc/mumble-server.ini mumbleserver/templates/mumble-server.ini.erb
Korvataan rivit:
welcometext="Welcome to this server running Murmur. Enjoy your stay!"
serverpassword=
users=100
Riveillä:
welcometext="<%= welcometext %>"
serverpassword=<%= serverpassword %>
users=<%= users %>
Ajetaan moduli(oletetaan, että ollaan 'modules' kansiossa):
$ sudo puppet apply --modulepath . -e 'include mumbleserver' notice: /Stage[main]/Mumbleserver/Package[mumble-server]/ensure: ensure changed 'purged' to 'present' notice: /Stage[main]/Mumbleserver/File[/etc/mumble-server.ini]/content: content changed '{md5}5ddb1ffe70a122591b3b359bb0e930f4' to '{md5}fa4569ebc7b83891fe9eafee33914972' notice: /Stage[main]/Mumbleserver/Service[mumble-server]: Triggered 'refresh' from 1 events notice: Finished catalog run in 24.08 seconds
Tarkistetaan tuliko muutokset voimaan /etc/mumble-server.ini tiedostoon
$ sudo cat /etc/mumble-server.ini |grep -v ^# |grep -v ^$ database=/var/lib/mumble-server/mumble-server.sqlite dbus=system ice="tcp -h 127.0.0.1 -p 6502" icesecretwrite= logfile=/var/log/mumble-server/mumble-server.log pidfile=/var/run/mumble-server/mumble-server.pid welcometext="
Welcome!
This is just a test" port=64738 serverpassword=NotGoodPassword bandwidth=72000 users=10 uname=mumble-server [Ice] Ice.Warn.UnknownProperties=1 Ice.MessageSizeMax=65536
Tulosteesta näemme, että muutokset tulivat voimaan.
Parametrisoidut luokat
Käytetään samaa modulia kuin ylhäällä, mutta parametrisoidaan luokka.
Muokataan manifests/init.pp -tiedostoa tämän näköiseksi:
## Varmistaa mumble-serverin olemassaolon ja korvaa sen conf-tiedoston ## modulin sisältämällä muunnellulla conf-tiedostolla (mumble-server.ini.erb) # Luokka ottaa vastaan arvoja parametreille # Parametreille on asetettu oletusarvot, joita luokka käyttää jos arvoja ei syötetä class mumbleserver2($serverpassword = "pass", $welcometext = "Hello", $users = 100) { package {'mumble-server': ensure => present, } service {'mumble-server': ensure => running, enable => true, subscribe => File['/etc/mumble-server.ini'], } file {'/etc/mumble-server.ini': ensure => file, content => template('mumbleserver2/mumbleserver2.erb'), require => Package['mumble-server'], } }
Ajetaan (oletetaan, että ollaan 'modules' kansiossa):
$ sudo puppet apply --modulepath . -e 'class{"mumbleserver":serverpassword=>MyPassword, welcometext=>HelloThere, users=>50}' notice: /Stage[main]/Mumbleserver/Package[mumble-server]/ensure: ensure changed 'purged' to 'present' notice: /Stage[main]/Mumbleserver/File[/etc/mumble-server.ini]/content: content changed '{md5}5ddb1ffe70a122591b3b359bb0e930f4' to '{md5}19d57f3b14cb9848c1b4a9d2fe48ada8' notice: /Stage[main]/Mumbleserver/Service[mumble-server]: Triggered 'refresh' from 1 events notice: Finished catalog run in 32.50 seconds
Tarkistetaan vielä, että syöttämiämme arvoja käytettiin:
$ sudo cat /etc/mumble-server.ini |grep -v ^# |grep -v ^$ database=/var/lib/mumble-server/mumble-server.sqlite dbus=system ice="tcp -h 127.0.0.1 -p 6502" icesecretwrite= logfile=/var/log/mumble-server/mumble-server.log pidfile=/var/run/mumble-server/mumble-server.pid welcometext="HelloThere" port=64738 serverpassword=MyPassword bandwidth=72000 users=50 uname=mumble-server [Ice] Ice.Warn.UnknownProperties=1 Ice.MessageSizeMax=65536
Syöttämämme arvot näkyvät tulosteessa. Toimii.
Ajetaan vielä ilman parametrien arvoja ja katsotaan toimiiko oletusarvot:
$ sudo puppet apply --modulepath . -e 'class{"mumbleserver":}' notice: /Stage[main]/Mumbleserver/File[/etc/mumble-server.ini]/content: content changed '{md5}19d57f3b14cb9848c1b4a9d2fe48ada8' to '{md5}005b192026561d8c9846584cf83dac78' notice: /Stage[main]/Mumbleserver/Service[mumble-server]: Triggered 'refresh' from 1 events notice: Finished catalog run in 0.28 seconds $ sudo cat /etc/mumble-server.ini |grep -v ^# |grep -v ^$ database=/var/lib/mumble-server/mumble-server.sqlite dbus=system ice="tcp -h 127.0.0.1 -p 6502" icesecretwrite= logfile=/var/log/mumble-server/mumble-server.log pidfile=/var/run/mumble-server/mumble-server.pid welcometext="Hello" port=64738 serverpassword=pass bandwidth=72000 users=100 uname=mumble-server [Ice] Ice.Warn.UnknownProperties=1 Ice.MessageSizeMax=65536
Oletusarvot näkyvät tulosteessa. Toimii.
Määritellyt tyypit (Defined Types)
Tehdään moduli, joka vie määritettyjen käyttäjien kotikansioon tiedoston.
Luodaan modulia varten vaadittavat kansiot ja tiedostot.
$ mkdir userfile ; mkdir userfile/manifests ; mkdir userfile/templates $ touch userfile/manifests/init.pp ; touch userfile/manifests/users.pp ; touch userfile/templates/testfile.erb
Userfile-modulin rakenne:
. └──userfile ├── manifests │ ├── init.pp │ └── users.pp └── templates └── testfile.erb
Lisätään seuraava sisältö init.pp -tiedostoon:
Lisätään seuraava sisältö users.pp -tiedostoon:
Lisätään seuraava sisältö testfile.erb -tiedostoon:
Ajetaan moduli (oletetaan, että ollaan 'modules' kansiossa) ja katsotaan toimiiko:
$ puppet apply --modulepath . userfile/manifests/users.pp notice: /Stage[main]//Userfile::Ufile[testman]/File[/home/testman/TestFile]/ensure: defined content as '{md5}f72c3b4a751d254b99b87ccda52f414e' notice: /Stage[main]//Userfile::Ufile[testman2]/File[/home/testman2/TestFile]/ensure: defined content as '{md5}f6355663d27c88687e29694817ab96ea' notice: Finished catalog run in 0.03 seconds
Tarkistetaan vielä tiedostojen olemassaolo:
$ sudo cat /home/testman/TestFile ; sudo cat /home/testman2/TestFile Thu, 15 Nov 2012 22:03:24 ------------------ Hey, testman! This is just a test. Don't worry be happy. -------------- Regards, Master of Puppets Thu, 15 Nov 2012 22:03:24 ------------------ Hey, testman2! This is just a test. Don't worry be happy. -------------- Regards, Master of Puppets
Moduli toimii toivotusti.
Lähteet:
http://docs.puppetlabs.com/learning/templates.html