【问题标题】:Why my puppet can not handle bundle exec?为什么我的 puppet 不能处理 bundle exec?
【发布时间】:2013-08-19 09:01:35
【问题描述】:

我的安装文件是这样的:

...
cd /home/work/package/dea_ng
...
bundle install
export PATH=$PATH:/usr/local/go/bin
bundle exec rake dir_server:install

我很确定最后一个命令可以在我的客户端机器上成功运行,但是 puppet 不断报告“返回 1 而不是 [0] 之一”错误。

所以,这里是安装清单:

class dea_ng::install {
  exec { "/bin/bash /home/work/install/dea_ng_install.sh":
    path=>'/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin',
    cwd =>'/home/work/install',
    logoutput => false,
    require =>Class["dea_ng::dea_ngfile"],
    before => Class["dea_ng::service"],
  }
} 

这个问题也发生在我的启动命令上,它也使用了 bundle exec:在 puppet 完成 dea_ng::install 并运行 dea_ng::service 之后,除非我在客户端机器上手动执行,否则下面的命令不起作用。

bundle exec rake dir_server:run[config/dea.yml] &

我对此感到非常困惑,在我的情况下,puppet 似乎无法很好地处理 bundle exec。我在这里错过了一些环境配置吗?

--debug 的输出似乎没有帮助:

Debug: Executing '/bin/bash /home/work/install/dea_ng_install.sh'
Error: /bin/bash /home/work/install/dea_ng_install.sh returned 1 instead of one of [0]
Error: /Stage[main]/Dea_ng::Install/Exec[/bin/bash /home/work/install/dea_ng_install.sh]/returns: change from notrun to 0 failed: /bin/bash /home/work/install/dea_ng_install.sh returned 1 instead of one of [0]

如果我删除 bundle exec 行,shell 会成功。

【问题讨论】:

  • 您能否以--debug 模式运行puppet 并在returned 1 错误之前发布几位。
  • 您可以在脚本中添加打印语句或其他内容,以查看每个执行环境的不同之处吗?
  • @Shakedown 您能否给我一些提示,说明在这种情况下,木偶世界和现实世界之间可能有什么不同?我实际上不知道从哪里开始调试。
  • 我真的只是从臀部拍摄,但是......也许当前的环境 (env) 会揭示一些东西?
  • 令人兴奋,我通过添加 output => true 得到了错误:“找不到 HOME 环境 - 扩展 `~'”。如何在 puppet 中解决这个问题?

标签: puppet


【解决方案1】:

真正的错误是通过添加输出=> true:

couldn't find HOME environment -- expanding `~'

这是 Puppet3 中的一个已知问题,请参阅

https://groups.google.com/forum/#!topic/puppet-users/5sk9mJqe4Z0

所以添加 HOME env 解决了问题:

环境 => "HOME=/root"

【讨论】:

  • 您应该将此标记为已接受的答案!只需单击左上角的绿色复选标记:D
猜你喜欢
  • 1970-01-01
  • 2012-05-02
  • 2015-06-07
  • 2011-12-27
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 2021-04-15
  • 2023-03-27
相关资源
最近更新 更多