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

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