我正在尝试从属性子集中编写.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输出?
答案 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