ruby / hash:将Chef属性转换为yaml时包含在文件中的Chef :: Node :: ImmutableMash

时间:2015-11-03 07:35:30

标签: ruby chef yaml

我正在尝试从属性子集中编写.yml文件。这是我使用的资源定义:

file '/home/user/file.yml' do
  owner 'user'
  group 'user'
  mode '0755'
  content node['default']['properties'].to_yaml
end

当我运行时,file.yml最终看起来像这样:

--- !ruby/hash:Chef::Node::ImmutableMash
config: !ruby/hash:Chef::Node::ImmutableMash
  example: value
  another: value

如何在没有!ruby/hash:Chef::Node::ImmutableMash输出的情况下获得干净的yaml输出?

1 个答案:

答案 0 :(得分:2)

事实证明,您需要做的就是在转换为yaml之前将属性显式转换为哈希。这是工作代码:

file '/home/user/file.yml' do
  owner 'user'
  group 'user'
  mode '0755'
  content node['default']['properties'].to_hash.to_yaml
end
  

注意:您需要使用chef-client 11.10.0或更高版本,因为   曾经有一个to_hash方法的bug。更多信息:   https://stackoverflow.com/a/14782389/1688034