Estoy creando un script que necesita analizar la salida yaml que produce el títere.Analizando puppet-api yaml con python
Cuando hace un ejemplo de petición agains https: // títere: 8140/producción/Catálogo/my.testserver.no voy a conseguir un poco hacia atrás yaml que se ve algo como:
--- &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:
y así ... El problema es cuando hago un yaml.load (yamlstream), me sale un error como:
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 ...
^
por lo que yo sé, esto & id001 parte se apoya en yaml.
¿Hay alguna forma de evitar esto? ¿Puedo decirle al analizador yaml que los ignore? Solo necesito un par de líneas de la transmisión yaml, ¿tal vez la expresión regular es mi amiga aquí? ¿Alguien ha hecho alguna de las expresiones regulares de limpieza yaml antes?
Usted puede obtener la salida yaml con rizo como:
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)
También encontré algo de información sobre este tema en la lista de correo de marionetas @http://www.mail-archive.com/[email protected]/msg24143.html. Pero no puedo hacer que funcione correctamente ...
No tuve la oportunidad de probarlo todavía, pero parece muy prometedor y creo que esto es exactamente lo que necesito. Trataré de cambiar mi código actual a algo así en lugar de tomar el código yaml no analizable. ¡Gracias! – xeor