【问题标题】:Writing two variables in a file via chef file resource content通过厨师文件资源内容在文件中写入两个变量
【发布时间】:2023-03-27 07:33:01
【问题描述】:

是否可以将两个变量写入厨师生成的文件 - 不使用模板 erb 文件?

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

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

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

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

    您是否希望将这些变量添加到文件的一行中? 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
    

    【讨论】:

    • 虽然一旦用户遇到需要格式化的东西,他们确实应该使用模板资源...
    • 是的,绝对同意你@lamont。
    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多