Teht4 (W46)
Tehtävänanto:
w46 läksy: Kokeile valitsemaasi puppet-modulia. Valitse itsellesi uusi moduli Puppet Forgesta tai GitHubista. Kokeile ja arvioi yksi moduli perusteellisesti. Kirjoita lisäksi lyhyt vertailu muista moduleista samaan tarkoitukseen. Tutustu Puppet Cookbookiin. Kirjoita esimerkkimoduli hyödyntäen kahta Cookbookin reseptiä. Voit jo miettiä, mistä aiheesta haluaisit tehdä kurssin puppet-modulin. Voit myös kysyä minulta (Terolta) vinkkejä aiheeseen. Kerro samalla, haluatko haastavan vai helpon tehtävän.
(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
Ladatun modulin kokeilu
Selailtuani useita kertoja Puppet Forgea ja GitHub:a päädyin yksinkertaisiin motd-moduleihin, joita tutkimalla niiden perusrakenne selkiytyisi.
Ensimmäiseksi arvioitavaksi moduliksi latasin puppetlabsin motd-modulin: http://forge.puppetlabs.com/puppetlabs/motd
Ladataan, puretaan ja uudelleen nimetään moduli sen ajamista varten:
$ wget http://forge.puppetlabs.com/puppetlabs/motd $ tar -zxvf puppetlabs-motd-1.0.1.tar.gz $ mv puppetlabs-motd-1.0.1.tar.gz motd
Modulin rakenne:
. ├── files │ └── README.markdown ├── lib │ └── puppet │ ├── facter │ │ └── README.markdown │ ├── parser │ │ └── functions │ │ └── README.markdown │ ├── provider │ │ └── README.markdown │ └── type │ └── README.markdown ├── manifests │ ├── init.pp │ └── README.markdown ├── metadata.json ├── Modulefile ├── README ├── spec │ ├── README.markdown │ ├── spec_helper.rb │ ├── spec.opts │ └── unit │ └── puppet │ ├── provider │ │ └── README.markdown │ └── type │ └── README.markdown ├── templates │ ├── motd.erb │ └── README.markdown └── tests └── init.pp
Moduli käyttää ajettaessa vain 'manifests'-kansiossa olevaa init.pp:tä ja 'templates'-kansiossa olevaa motd.erb:ia.
init.pp
class motd { if $kernel == "Linux" { file { '/etc/motd': ensure => file, backup => false, content => template("motd/motd.erb"), } } }
motd.erb
The operating system is <%= operatingsystem %> The free memory is <%= memoryfree %> The domain is <%= domain %>
Ajetaan moduli (modules kansiosta) ja tarkistetaan tulos:
$ sudo puppet apply --modulepath . -e 'include motd' notice: /Stage[main]/Motd/File[/etc/motd]/content: content changed '{md5}96c571407feb38e69291f299e59d14e4' to '{md5}d807c7a5579d3ddc04d65a1944cf19e1' notice: Finished catalog run in 0.04 seconds $ cat /etc/motd The operating system is Ubuntu The free memory is 7.49 GB The domain is LoL
Moduli toimii tarkoitetulla tavalla.
Tämän modulin toiminnallisuus ei juuri tajuntaa räjäytä, mutta tiedostorakenne ja siellä löytyvät 'README'-tiedostot ovat todella käteviä modulin yleisen kansiorakenteen ja toiminnan ymmärtämisen kannalta.
Kokeilin myös muutamaa muuta motd-modulia.
http://forge.puppetlabs.com/chris3/my_motd
Todella yksinkertainen moduli, joka lisää '/etc/motd' tiedostoon sisällön: 'Welcome to this box'.
Yritin myös ajaa http://forge.puppetlabs.com/dhoppe/motd, mutta sain seuraavan virheilmoituksen, enkä pienellä pähkäilyllä saanut modulia toimimaan..
Module motd does not support quantal at /home/****/Downloads/motd/manifests/params.pp:16 on node **.lol
Moduli Puppet CookBook tarjontaan perustuen
Sivuista:
http://www.puppetcookbook.com/posts/install-multiple-packages.html
http://www.puppetcookbook.com/posts/exec-a-command-in-a-manifest.html
Tehdään moduli, joka päivittää apt-pakettilistan ja asentaa muutaman yleishyödyllisen ohjelma.
$ mkdir proginst; mkdir proginst/manifests; touch proginst/manifests/init.pp;
Laitetaan seuraava sisältö init.pp-tiedostoon
## Ajaa komennon 'apt-get update':n. ## Asentaa paketit: screen, irssi ja links. class proginst { exec { 'apt-get update': path => '/usr/bin/', } Package { ensure => 'installed' } $programs = [ 'screen', 'irssi', 'links' ] package { $programs: } }
$ sudo puppet apply --modulepath . -e 'include proginst' notice: /Stage[main]/Proginst/Exec[/usr/bin/apt-get update]/returns: executed successfully notice: /Stage[main]/Proginst/Package[screen]/ensure: ensure changed 'purged' to 'present' notice: /Stage[main]/Proginst/Package[irssi]/ensure: ensure changed 'purged' to 'present' notice: /Stage[main]/Proginst/Package[links]/ensure: ensure changed 'purged' to 'present' notice: Finished catalog run in 77.93 seconds
Moduli toimii moitteetta.
Lähteet:
http://forge.puppetlabs.com/puppetlabs/motd
http://forge.puppetlabs.com/chris3/my_motd
http://forge.puppetlabs.com/dhoppe/motd
http://www.puppetcookbook.com/posts/install-multiple-packages.html
http://www.puppetcookbook.com/posts/exec-a-command-in-a-manifest.html