2016-04-14 6 views
0

Können Python-Klassen/Objekte/Funktionen in Puppet-Dateien (.rb-Dateien mit benutzerdefinierten Anbietern oder anderen) importiert werden? Gibt es einen anderen Weg als "exec", um Python-Code mit Puppet auszuführen?Ist es möglich, Python-Code in Puppet-Dateien zu importieren?

+0

Sie sind wahrscheinlich besser dran zu ansible Schalten, wie es Python basiert Siehe http://docs.ansible.com/ansible/developing_api.html oder Ruby zu lernen und für Marionette in Ruby on Code Ihr Add schreiben stattdessen – Vorsprung

Antwort

0

Ruby hat eine system() Methode, mit der Sie ein externes Python-Programm ausführen können. Ruby hat auch fork() und exec(), mit denen Sie Ihre eigenen, mit mehr Kontrolle rollen können. Puppet hat auch Wrapper um die letzteren, die Ihr Ruby-Plugin-Code benutzen kann.

Aber Sie scheinen nach etwas anderem zu fragen. Die standardmäßige C-Ruby-Implementierung bietet native Erweiterungen (C) und Python eine C-API. Es ist daher möglich, im Prinzip, einen Python-Interpreter in Ruby über eine native Extension einzubetten, mit Aufrufen in einen Ruby -> C -> Python. Sie können eine solche Erweiterung in jedem Ruby-Plugin verwenden, das Puppet unterstützt, einschließlich benutzerdefinierter Funktionen, benutzerdefinierter Fakten, Ressourcenanbietern und sogar ERB-Vorlagen.

In der Praxis kann ich den Einbettungsansatz nicht empfehlen. Obwohl ich mir sicher bin, dass es funktioniert werden könnte, scheint es eine Menge unnötiger Komplikationen zu sein, mit viel Laufzeitaufwand.