Ruby 通过chef文件资源内容在文件中写入两个变量

Ruby 通过chef文件资源内容在文件中写入两个变量,ruby,chef-infra,Ruby,Chef Infra,是否可以在不使用模板erb文件的情况下将两个变量写入chef生成的文件 username = secret[:username] password = secret[:password] file "/home/secret_file.txt" do content username password owner 'user' group 'user' mode '0755' end 仅添加一个变量可以按预期工作,但如果使用如上所示的两个变量,我会收到一条

是否可以在不使用模板erb文件的情况下将两个变量写入chef生成的文件

username = secret[:username]
password = secret[:password]

file "/home/secret_file.txt" do
  content username password
  owner 'user'
  group 'user'
  mode '0755'
end

仅添加一个变量可以按预期工作,但如果使用如上所示的两个变量,我会收到一条错误消息“Chef::Resource::File的未定义方法`username'”

是否要在文件的一行中添加这些变量?content属性采用字符串类型

可以使用字符串插值创建字符串并将内容添加到文件:

username = secret[:username]
password = secret[:password]

file "/home/secret_file.txt" do
  content "#{username} #{password}"
  owner 'user'
  group 'user'
  mode '0755'
end
或者,如果您需要以某种方式对其进行格式化:

username = secret[:username]
password = secret[:password]
output = <<-CODE
The username is #{username}
The password is #{password}
CODE

file "/home/secret_file.txt" do
  content output
  owner 'user'
  group 'user'
  mode '0755'
end
username=secret[:username]
密码=秘密[:密码]

output=是否希望在文件的一行中添加这些变量?content属性采用字符串类型

可以使用字符串插值创建字符串并将内容添加到文件:

username = secret[:username]
password = secret[:password]

file "/home/secret_file.txt" do
  content "#{username} #{password}"
  owner 'user'
  group 'user'
  mode '0755'
end
或者,如果您需要以某种方式对其进行格式化:

username = secret[:username]
password = secret[:password]
output = <<-CODE
The username is #{username}
The password is #{password}
CODE

file "/home/secret_file.txt" do
  content output
  owner 'user'
  group 'user'
  mode '0755'
end
username=secret[:username]
密码=秘密[:密码]

输出=虽然一旦用户需要格式化某些内容,他们应该真正使用模板资源…是的,绝对同意@lamont。尽管一旦用户需要格式化某些内容,他们应该真正使用模板资源…是的,绝对同意@lamont。