Generate a file from a string without having to create a template file in Chef?

MiniQuark picture MiniQuark · Mar 8, 2013 · Viewed 9.3k times · Source

I currently use this code in a recipe:

template "/var/django/.ssh/id_rsa" do
    source "id_rsa.erb"
    owner "django"
    group "django"
    variables :key => ssh_key
    mode 00600
end

And here's what id_rsa.erb looks like:

<%= @key %>

I was wondering if I could avoid having a template, and simply produce the file from the string. Something like this perhaps:

file_from_string "/var/django/.ssh/id_rsa" do
    source ssh_key
    owner "django"
    group "django"
    mode 00600
end

Answer

StephenKing picture StephenKing · Mar 8, 2013

Use the file resource and specify the file contents to the content property.

In your case, this would result in a resource definition similar to this:

file "/var/django/.ssh/id_rsa" do
  content ssh_key
  owner "django"
  group "django"
  mode 00600
end