Create file using template.erb

noMAD picture noMAD · Oct 5, 2012 · Viewed 13.9k times · Source

I am fairly new to ruby and chef, I wanted to know if there is a way to create a file using a template? I tried searching about it but couldn't find much stuff. Am try to create a blacklist file and insert some regex into it via chef. So I wanted to add the attributes and use a template.erb to create the file while running chef. Any hints, pointers?

Answer

Draco Ater picture Draco Ater · Oct 5, 2012

Chef has special resource named template, to create files from templates. You need to put your template inside cookbook under templates/default directory and then use it in your recipe, providing the variables.

cookbooks/my_cookbook/templates/default/template.erb :

# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>

cookbooks/my_cookbook/recipes/default.rb :

template "/tmp/config.conf" do
  source "template.erb"
  variables( :a => 'Hello', :b => 'World', :c => 'Ololo' )
end