Jak rekurencyjnie odzwierciedlać katalog i jego zawartość za pomocą marionetki?

14

Powiedzmy, że mam moduł files/etc/foo/{conf0, conf1, conf2, conf3, etc}. Wystarczy umieścić każdy z tych plików, gdy ich liczba jest niewielka:

file { 'conf0':
    path => '/etc/foo/conf0',
    ensure => true,
    source => 'puppet:///.../etc/foo/conf0',
}

i powtórz. Ale wiąże się to z dużą ilością powielania i utrzymanie go jest nużące, jeśli istnieje kilka plików konfiguracyjnych. Chciałbym upewnić się, że files/etc/foo/jest dublowany na danej ścieżce. To jest do powiedzenia,

file { 'etc foo confs':
   path => '/etc/foo',
   ensure => recursive,
   source => 'puppet:///.../etc/foo',
}

spowodowałoby /etc/foo/conf0, /etc/foo/conf1i tak dalej. czy to możliwe?

pstrąg
źródło

Odpowiedzi:

22

Jasne - filestyp ma recurseopcję (a recurselimitjeśli chcesz ograniczyć głębokość, w którą wchodzi katalog).

file { 'etc foo confs':
   path => '/etc/foo',
   source => 'puppet:///.../etc/foo',
   recurse => true,
}
Shane Madden
źródło
5
Inną rzeczą, o której należy pamiętać, jest liczba plików, dla których Puppet będzie musiał utrzymywać połączenia. Szybko zabraknie deskryptorów plików i marionetka zacznie mieć kłopoty. Natknąłem się na ten problem, zanim spróbowałem wykonać to samo zadanie.
Jeremy Bouse,
@JeremyBouse Dziękuję; to bardzo przydatna informacja.
pstrąg winny