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.



