Tworzę skrypt, który musi przeanalizować wyjściowy wynik yaml, który generuje marionetka.Parsowanie marionetek-api yaml z pytonem
Kiedy robi Przykładowe żądanie Agains https: // lalek: 8140/produkcja/Katalog/my.testserver.no będę trochę yaml tyłu, który wygląda mniej więcej tak:
--- &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:
i tak na ... problemem jest to, kiedy zrobić yaml.load (yamlstream), będę się błąd jak:
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 ...
^
o ile wiem, to & id001 część jest obsługiwana w YAML.
Czy jest jakiś sposób obejścia tego? Czy mogę powiedzieć parserowi yaml, aby je zignorował? Potrzebuję tylko kilku linii z potoku yaml, może regex jest moim przyjacielem tutaj? Ktoś zrobił wcześniej wyszczuplające sprzączki yaml?
można uzyskać wyjście yaml z curl jak:
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)
Znalazłem również kilka informacji na ten temat w mailingową lalkowego @http://www.mail-archive.com/[email protected]/msg24143.html. Ale nie mogę go poprawnie uruchomić ...
Nie miałem jeszcze okazji tego wypróbować, ale wygląda to bardzo obiecująco i myślę, że właśnie tego potrzebuję. Spróbuję zmienić mój obecny kod na coś takiego, zamiast brać niepoprawny kod yaml. Dzięki! – xeor