パペットが出力する yaml 出力を解析する必要があるスクリプトを作成しています。
例https://puppet:8140/production/catalog/my.testserver.no に対してリクエストを実行すると、次のような yaml が返されます。
--- &id001 !ruby/object:Puppet::Resource::Catalog
aliases: {}
applying: false
classes:
- s_baseconfig
...
edges:
- &id111 !ruby/object:Puppet::Relationship
source: &id047 !ruby/object:Puppet::Resource
catalog: *id001
exported:
など...問題は、yaml.load(yamlstream)を実行すると、次のようなエラーが発生することです。
yaml.constructor.ConstructorError: could not determine a constructor for the tag '!ruby/object:Puppet::Resource::Catalog'
in "<string>", line 1, column 5:
--- &id001 !ruby/object:Puppet::Reso ...
^
私の知る限り、この &id001 部分は yaml でサポートされています。
これを回避する方法はありますか?yaml パーサーにそれらを無視するように指示できますか? yaml ストリームからの数行だけが必要ですが、ここでは正規表現が私の友達でしょうか? 以前にyamlのクリーンアップ正規表現を行った人はいますか?
次のように curl を使用して yaml 出力を取得できます。
curl --cert /var/lib/puppet/ssl/certs/$(hostname).pem --key /var/lib/puppet/ssl/private_keys/$(hostname).pem --cacert /var/lib/puppet/ssl/certs/ca.pem -H 'Accept: yaml' https://puppet:8140/production/catalog/$(hostname)
puppet メーリングリスト @ http://www.mail-archive.com/puppet-users@googlegroups.com/msg24143.htmlでこれに関する情報も見つけました。しかし、私はそれを正しく動作させることができません...