Wie kann ich ein Verzeichnis und seinen Inhalt mit puppet rekursiv spiegeln?

14

Nehmen wir an, ich habe ein Modul mit files/etc/foo/{conf0, conf1, conf2, conf3, etc}. Es ist einfach genug, jede dieser Dateien zu platzieren, wenn die Anzahl klein ist:

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

und wiederholen. Es ist jedoch mit einigem Aufwand an Duplikaten verbunden, und es ist mühsam zu warten, ob mehrere Konfigurationsdateien vorhanden sind. Ich möchte sicherstellen, dass files/etc/foo/das auf einen bestimmten Pfad gespiegelt wird. Das heißt,

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

schaffen würde /etc/foo/conf0, /etc/foo/conf1und so weiter. Ist das möglich?

Forellenwein
quelle

Antworten:

22

Sicher - der filesTyp hat eine recurseOption (und recurselimitwenn Sie einschränken möchten, wie tief er in das Verzeichnis reicht).

file { 'etc foo confs':
   path => '/etc/foo',
   source => 'puppet:///.../etc/foo',
   recurse => true,
}
Shane Madden
quelle
5
Das andere, was Sie dabei beachten sollten, ist die Anzahl der Dateien, für die Puppet Verbindungen aufrechterhalten muss. Es würde nicht lange dauern, bis die Dateideskriptoren aufgebraucht waren und die Puppe in Schwierigkeiten geriet. Ich bin auf dieses Problem gestoßen, bevor ich versucht habe, genau diese Aufgabe zu erledigen.
Jeremy Bouse
@ JeremyBouse Vielen Dank; Das sind sehr nützliche Informationen.
Forellenwein