Puppet (moduly)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

V minulé kapitole bylo demonstrováno vytvoření jednoduchého manifestu, pro práci se souborem /etc/hosts.

Chceme-li sofistikovanější údržbu tohoto souboru, je je lepší vytvořit samostatný modul. A tento modul do třídy basic vložit přes direktivu include. Jelikož má jít o modul pro údržbu souborů /etc/hosts, tak pro název modulu použiju stejné jméno a rovnou provedu úpravu souboru /etc/puppet/manifests/node.pp

Poznámka
class basic {
    include hosts
}

node "master.felk.cvut.cz" {
    include basic
}

Kde jsou moduly uloženy?

Všechny moduly má Puppet uloženy v adresáři /etc/puppet/modules. Jméno modulu, které natahuje direktiva include je relevantní názvu podadresáře.

Tento poadresář kromě povinného adresáře manifests může obsahovat ještě další adresáře:

files
ve kterém jsou soubory, které bude puppet distribuovat beze změn (ssh klíče, výchozí konfigurační soubory atp.)
templates
do kterého se ukládají šablony konfiguračních souborů, což jsou soubory s příponou .erb

Vůbec nevadí pokud zůstane některý těchto adresářů z nich prázdný, takže můžeme všechny tři adresáře vytvořit najednou:

Poznámka
 root@master~# mkdir -p /etc/puppet/modules/<jméno modulu>/{files,manifests,templates}

Výchozím souborem modulu pak je soubor <code>init.pp</code>, ve kterém je modul inicializován jako třída.


init.pp

Kód, který bude soubor generovat budeme zapisovat do souboru init.pp, ve kterém je definován modul jako třída. Ale jednotlivé záznamy pro typ host, přes které se budou zpracovávat jednotlivé záznamy budeme zapisovat do samostatného souboru s názvem config.pp, který se do třídy natáhne přes direktivu include. Tedy..

file
Přes který budeme soubor /etc/hosts zakládat, bude součástí init.pp.
host
Který bude modifikovat jednotlivé záznamy v souboru /etc/hosts umístíme do souboru config.pp ve kterém je budeme udržovat. Na začátku budeme spravovat pouze /etc/hosts stroje master, tudíž můžeme použít jeho výchozí nastavení.

Obsah souboru init.pp je tedy prozatím následující:

Poznámka
class hosts {
	file {"/etc/hosts":
		content => template("obsah_pro_hosts"),
	}
	include hosts::config
}

config.pp

Obsahem tohoto souboru bude subtřída modulu host - config, která prozatím bude obsahovat pouze jeden záznam a to stroje master:

Poznámka
class hosts::config {
	host {"master":
		ip => '147.32.87.200',
		name => 'master',
		comment => "Puppetmaster",
		host_aliases => "master.felk.cvut.cz",
		ensure => present,
	}
}