Ich versuche, eine Puppet-ERB-Vorlage für eine Datei mit einigen Standardinhalt und einem optionalen Schwanz zu erstellen. Der optionale Teil wird durch den Hostnamen/FQDN des Ppuppet-Clients bestimmt und muss nicht existieren. Derzeit habe ich das:Wie kann ich optional eine Datei in eine Puppet ERB-Vorlage einfügen?
<%= scope.function_file(['mod/default']) %>
<%= scope.function_file(["mod/" + @hostname, "mod/" + @fqdn, 'mod/empty']) %>
mod
ist der Modulname. Ich musste eine leere mod/files/empty
erstellen, so dass scope.function_file
nicht fehlschlägt, wenn es keine Datei für den Hostnamen oder FQDN findet. Ich denke, das ist hässlich.
Ich habe versucht, Variationen:
<%= File.read('default') %>
<% if File.file?(@hostname) %>
<%= File.read(@hostname) %>
<$ elsif File.file?(@fqdn) %>
<%= File.read(@fqdn) %>
<& end %>
Mit einem platzierten Dateien im Verzeichnis mod/templates
statt mod/files
, aber ich habe in der Regel eine Fehlermeldung über fehlende Dateien. Die Verwendung von scope.function_template
mit den Dateien in mod/templates
hat auch das gleiche Problem wie scope.function_file
- die Aktion schlägt fehl, wenn Dateien fehlen.
Wie kann ich das tun, ohne Platzhalterdateien erstellen zu müssen (wie empty
hier)?
@MattSchuchard bitte unterlassen, Unsinn zu posten. Ihre Antwort lieferte keine praktikablen Methoden. Puppet-Lösungen sind willkommen, sofern Sie eine haben. Du hast gesagt: "Das ist der falsche Weg", ohne zu erklären, warum es der falsche Weg ist. – muru