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.