Puppeteers Blog

Hakemistorakenteen luonti rekursiivisesti Puppetilla

January 21, 2015 

Puppetin File-resurssilla hallitaan tyypillisesti yksittäisiä tiedostoja, hakemistoja tai linkkejä. Tämä on ongelmallista, jos hallittava tiedosto on syvän hakemistorakenteen alla, eikä hakemistorakennetta ole luotu esimerkiksi ohjelman asennuksen yhteydessä. File-resurssi osaa kuitenkin luoda useita tiedostoja, kun sen otsakkeelle ($title) annetaan merkkijonon sijaan lista-tyyppinen muuttuja. Alla esimerkki bind-moduulista

file { [ '/var/named/chroot',
 '/var/named/chroot/var',
 '/var/named/chroot/var/named',
 '/var/named/chroot/Var/named/data' ]:
 ensure => directory,
 owner => root,
 group => "${::os::params::admingroup}",
 mode => 755,
 require => Class['bind::install'],
 }

Bindin zone-tiedostoja ei voi asentaa, ennen kuin hakemisto /var/named/chroot/var/named/data on olemassa. Siis zone-tiedostoon pitää lisätä riippuvuus (Require) yllä olevan luettelon viimeiseen tiedostoon:

 file { "bind-zone-$domain":
 name => "/var/named/chroot/var/named/data/$domain",
 ensure => present,
 source => "puppet:///files/bind-zone-$domain",
 owner => root,
 group => "${::os::params::admingroup}",
 mode => 644,
 require => File['/var/named/chroot/var/named/data'],
 
 }

Mikäli hakemistopolku /var/named/chroot/var/named/data olisi käyttöjärjetelmästä riippuvainen, voisi sen alkuosan parametrisoida ja lisätä $::bind::params -luokkaan.

Samuli Seppänen
Samuli Seppänen
Author archive
menucross-circle