Je crée un script qui doit analyser la sortie yaml que la marionnette génère.Analyse de marionnette-api yaml avec python
Quand je demande une agains ne exemple https: // marionnettes: 8140/production/catalogue/my.testserver.no je récupérer une partie de YAML qui ressemble à:
--- &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:
et ainsi sur ... Le problème est quand je fais un yaml.load (yamlstream), je reçois une erreur comme:
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 ...
^
Pour autant que je sache, cette partie & ID001 est pris en charge en YAML.
Y a-t-il un moyen de contourner ce problème? Puis-je dire au parseur de yaml de les ignorer? Je n'ai besoin que de quelques lignes du flux yaml, peut-être que regex est mon ami ici? Quelqu'un a-t-il déjà effectué des regex de nettoyage de yaml?
Vous pouvez obtenir la sortie de YAML avec boucle comme:
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)
Je trouve également quelques informations à ce sujet dans la liste de diffusion de marionnettes @http://www.mail-archive.com/[email protected]/msg24143.html. Mais je ne peux pas le faire fonctionner correctement ...
Je n'ai pas encore eu l'occasion de l'essayer, mais cela semble très prometteur et je pense que c'est exactement ce dont j'ai besoin. Je vais essayer de changer mon code actuel pour quelque chose comme ça au lieu de prendre le code yaml incomparable. Merci! – xeor