Можно ли импортировать код Python в кукольные файлы?

Можно ли импортировать классы/объекты/функции python в файлы марионеток (файлы .rb с пользовательскими поставщиками или любые другие)? Есть ли способ, кроме «exec», запустить код Python с помощью марионетки?


person tripti sachdeva    schedule 14.04.2016    source источник
comment
Вам, вероятно, лучше переключиться на Ansible, так как он основан на Python. /developing_api.html Или изучите ruby ​​и вместо этого напишите свой дополнительный код на ruby ​​для puppet.   -  person Vorsprung    schedule 14.04.2016


Ответы (1)


В Ruby есть метод system(), с помощью которого вы можете запустить внешнюю программу Python. Ruby также имеет fork() и exec(), с помощью которых вы можете создавать свои собственные, с большим контролем. Puppet также имеет обертки вокруг последнего, которые может использовать код вашего плагина Ruby.

Но вы, кажется, просите о чем-то другом. Стандартная реализация C Ruby предоставляет собственные (C) расширения, а Python имеет C API. Таким образом, в принципе можно встроить интерпретатор Python в Ruby через собственное расширение, с вызовами в него по пути Ruby --> C --> Python. Вы можете использовать такое расширение в любом плагине Ruby, который поддерживает Puppet, включая пользовательские функции, пользовательские факты, поставщиков ресурсов и даже шаблоны ERB.

На практике я не могу рекомендовать подход встраивания. Хотя я уверен, что это можно заставить работать, это кажется ненужным усложнением и большими накладными расходами во время выполнения.

person John Bollinger    schedule 14.04.2016