如何在Puppet中的模板中使用命令的输出?

时间:2013-11-06 16:51:55

标签: ruby-on-rails passenger puppet

我是木偶初学者,我们正在尝试为Apache创建一个passenger.load模块描述文件,其中包含命令passenger-config --root的输出,结果如下所示:

 LoadModule passenger_module /var/lib/gems/2.0.0/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so
 ...

为实现这一目标,我们使用的是包含以下行的模板passenger.load.erb

LoadModule passenger_module <%= @passenger_root %>/buildout/apache2/mod_passenger.so
...

现在的问题是:如何设置变量passenger_root?我需要像$passenger_root = "OUTPUT OF passenger-config --root"这样的东西,但据我所知,木偶变量更像是常量。

此外,passenger-config命令由木偶脚本本身提供(通过安装乘客),因此木偶大师或木偶编译时无法使用它。

2 个答案:

答案 0 :(得分:1)

我想不出用木偶的方式直接做到这一点的方法,所以这里有一些替代方案(可以修改或扩展):

  • 编写一个生成文件的脚本,如果文件不存在则让puppet执行它。
  • 将passenger_config_root作为一个因素展开并在您的模板中使用

答案 1 :(得分:1)

虽然我无法直接回答您的问题(没有使用Puppet的经验),但有两种选择:

  1. 使用Phusion APT存储库安装Passenger。
  2. 使用Passenger tarball而不是gem。这样你就可以控制它的确切路径了。