2016-04-14 7 views
0

Pythonクラス/オブジェクト/関数をパペットファイル(カスタムプロバイダなどの.rbファイル)にインポートできますか? "exec"とは別に、人形を使ってPythonコードを実行する方法はありますか?人形ファイルにPythonコードをインポートすることは可能ですか?

+0

それは がhttp://docs.ansible.com/ansible/developing_api.html やRubyを学び、人形のためにルビーのコードであなたのアドオンを書いてください をベースのpythonであるとしてあなたは、おそらくAnsibleに切り替えたほうが良いでしょう代わりに – Vorsprung

答えて

0

Rubyには、外部Pythonプログラムを実行するためのsystem()メソッドがあります。 Rubyにはfork()exec()があり、より多くの制御を加えて自分でロールすることができます。 PuppetにはRubyプラグインコードが使用するラッパーもあります。

しかし、あなたは何か違うことを求めているようです。標準のC Ruby実装はネイティブ(C)拡張を提供し、PythonはC APIを提供します。したがって、の原則としてはRubyにネイティブ拡張を介してPythonインタプリタを埋め込み、Ruby - > C - > Pythonのパスの後にそれを呼び出すことができます。カスタム関数、カスタムファクト、リソースプロバイダ、ERBテンプレートなど、Puppetがサポートするあらゆる種類のRubyプラグインでこのような拡張を使用できます。

実際には、埋め込み手法をお勧めできません。私はそれを動作させることができると確信していますが、それは実行時のオーバーヘッドが非常に多くの不要な複雑さのように思えます。

関連する問題