Ich bin ziemlich neu in Ruby und Chef, wollte ich wissen, ob es eine Möglichkeit gibt, eine Datei mit einer Vorlage zu erstellen? Ich habe versucht, danach zu suchen, konnte aber nicht viel finden. Ich versuche, eine Blacklist-Datei zu erstellen und über Chefkoch etwas Regex einzufügen. Also wollte ich die Attribute hinzufügen und eine template.erb
verwenden, um die Datei beim Ausführen von Chef zu erstellen. Irgendwelche Hinweise, Hinweise?Erstelle Datei mit template.erb
11
A
Antwort
21
Chef hat spezielle Ressource template, mit dem Namen, um Dateien von Vorlagen zu erstellen. Sie müssen Ihre Vorlage in das Kochbuch unter Vorlagen/Standardverzeichnis einfügen und dann in Ihrem Rezept verwenden, indem Sie die Variablen bereitstellen.
Kochbücher/my_cookbook/templates/default/template.erb:
# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>
Kochbücher/my_cookbook/Rezepte/default.rb:
template "/tmp/config.conf" do
source "template.erb"
variables(:a => 'Hello', :b => 'World', :c => 'Ololo')
end
3
require 'erb'
class Foo
attr_accessor :a, :b, :c
def template_binding
binding
end
end
new_file = File.open("./result.txt", "w+")
template = File.read("./template.erb")
foo = Foo.new
foo.a = "Hello"
foo.b = "World"
foo.c = "Ololo"
new_file << ERB.new(template).result(foo.template_binding)
new_file.close
So a
, b
und c
jetzt availible als Variablen in der Vorlage
I.E.
# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>
Ergebnis =>
# result.txt:
A is Hello
B is World
C is Ololo
oh, gut zu wissen :) nie benutzt Chef – fl00r
Danke Draco. :) Genau das habe ich gesucht. – noMAD
@Draco: Haben Sie eine Frage. Also, hier muss ich die Datei im Rezept richtig erstellen? Ich meine der Code fl00r hatte geschrieben, soll das in das Rezept gehen? – noMAD