1
Puppet에서 사용하는 ERB 템플릿에서 해시의 YAML 출력을 정렬하여 항상 동일한 출력인지 확인하려고합니다. 'ERB 템플릿에서 YAML 출력 정렬
class mytest {
notify { 'toto':
message => template('mytest/hash.erb'),
}
}
내가 할 수있는 :
<%=
class MyHash < Hash
def to_yaml(opts = {})
YAML::quick_emit(self, opts) do |out|
out.map(taguri, to_yaml_style) do |map|
keys.sort.each do |k|
v = self[k]
map.add(k, v)
end
end
end
end
end
myScope = scope.to_hash.reject{|k,v| k.to_s =~ /(uptime|timestamp|free)/}
MyHash[myScope].to_yaml
-%>
산출되는 :
$ puppet apply -e 'include mytest' --modulepath .
Failed to parse template mytest/hash.erb:
Filepath: /usr/lib/ruby/1.8/yaml.rb
Line: 391
Detail: wrong argument type String (expected Data)
at /home/rpinson/bas/puppet/mytest/manifests/init.pp:3 on node foo.example.com
이 mytest/manifests/init.pp
의 내용입니다 여기
mytest/templates/hash.erb
에서) 지금까지 무엇을 가지고 이 형식 데이터가 어디서 비롯되는지, 매개 변수를 어떻게 형 변환하는지 이해하는 것 같습니다. 이 작업을 위해 y를 사용하십시오 ...
적어도/home/rpinson/bas/puppet/mytest/manifests/init.pp 파일을 보여 주시겠습니까? BTW,'quick_emit'는'Psych'에서 (http://apidock.com/ruby/Psych/quick_emit/class) [더 이상 사용되지 않는 것으로 보인다]. 'Psych'을'YAML' 구현으로 사용합니까? – mudasobwa
'init.pp '를 질문에 추가합니다. 나는 YAML 구현이 진실을 말하기 위해 사용되었는지 전혀 모른다. –
OK, 문제는 확실히'myScope '입니다. 템플릿의 마지막 줄에'MyHash [myScope] .to_yaml' 대신'myScope'을 넣고 출력을 보여줄 것입니까? – mudasobwa