我有一个hash
哈希,我需要嵌入exec
资源命令.我的想法是将序列化为hash
a string
并将其插入到exec中call
.该exec
调用将通过执行ruby代码ruby -e 'ruby code here'
.
使用irb,我知道hash.to_s
创建了一个可解析的单行版本hash
.或者我可以使用json.我怀疑你可以打电话给to_s
傀儡,但我不确定.
Puppet的stdlib有parseyaml
和parsejson
反序列化,但有没有办法序列化为可解析string
?我可以编写一个自定义木偶函数来完成它,但如果有的话,我更喜欢已经内置的解决方案.
更新 我正在考虑定义一个木偶功能.我之前从未写过,所以我不确定语法.这是我的第一次尝试:
Puppet::Parser::Functions.newfunction(
:serialize_hash,
:arity => 2,
:doc => "Serialize a hash to any depth and optionally escape the double quotes.",
:type => :rvalue) do |args|
hash = args[0]
escape_quotes = args[1]
serialized = hash.to_s
if (escape_quotes)
serialized.sub!(/"/, "\\\"")
end
serialized
end
Run Code Online (Sandbox Code Playgroud)
您始终可以使用puppet模块内联执行ruby代码:
$my_string = inline_template('<%= @my_hash.to_s %>')
Run Code Online (Sandbox Code Playgroud)
显然重要的是不要过度使用它,但是当一个非常简单的ruby函数可以实现你需要的东西时它特别有用.
归档时间: |
|
查看次数: |
2152 次 |
最近记录: |