4

我在全球范围内安装了 PHP 的作曲家,我试图让 Puppet 自动运行作曲家自我更新命令。

这是我的清单:

exec { "composer self-update":
  path    => '/usr/local/bin/'
}

以 root 身份手动运行“/usr/local/bin/composer self-update”可以工作,但是当 puppet 运行时会产生以下错误:

从 notrun 更改为 0 失败:/usr/bin/env: php: 没有这样的文件或目录

我不知道为什么手动行为与 Puppet 行为不同。

另外,我让 Puppet 以 root 身份运行。

4

2 回答 2

1

我能够通过更改执行程序自己解决它。我不确定为什么会有区别,但这有效:

exec { "/usr/local/bin/composer self-update":}

请注意,不同之处在于路径包含在 exec 名称中,而不是路径参数中。如果有人知道为什么它不能以另一种方式工作,那可能会提供信息。

于 2013-09-16T18:15:59.610 回答
1

运行你所写的方式应该是有效的。不过,您可以使用command参数:

exec { "do_some_update" :
   command => "composer self-update",
   path => "/usr/local/bin",
}

这样,您可以exec稍后通过以下方式参考:

 file { "configuration" :
   require => Exec["do_some_update"]       
 }

而不是打字Exec["/usr/local/bin/composer self-update"]

于 2013-09-16T18:40:00.957 回答