2

我在 Ubuntu 11.10 上使用 Dropbox命令行实用程序/守护程序,但它不适用于 Puppet。

我可以手动成功控制保管箱:

$ sudo /etc/init.d/dropbox [status/start/stop/status]

但是,当我配置 Puppet 以确保保管箱始终运行时,它会失败并显示以下日志消息:

(/Stage[main]/Dropbox::Service/Service[dropbox]/ensure) change from stopped to running failed: Could not start Service[dropbox]: Execution of '/etc/init.d/dropbox start' returned 1:  at /etc/puppet/modules/dropbox/manifests/init.pp:8

这是我的木偶清单文件:

class dropbox {
  include dropbox::service
}

class dropbox::service {
  service { "dropbox":
    ensure => running,
  }
}

上述错误消息似乎也暗示 Dropbox“状态”命令不适用于 Puppet,因为即使 Dropbox 已经在运行,我也会收到相同的错误消息(“无法启动”)。

有什么想法吗?

4

2 回答 2

3

2.7 之前的 Puppet 版本默认不使用 /etc/init.d/service status 命令。他们在进程表中查找进程名称,因此如果守护进程名称与服务名称不同,那么这些行为会给您带来如下错误:

 ...Service[dropbox]/ensure) change from stopped to running failed...

在每次执行傀儡代理时。您应该检查该服务是否具有工作状态命令:

 sudo /etc/init.d/dropbox status; echo $?
 # That command should return output with "running" text and return code 0 like:
 dropboxd for USER dropbox: running (pid 9823)
 0

然后告诉 puppet 使用它而不是它自己的 (<2.7) 机制 - 在服务定义中输入“hasstatus => true”。

于 2012-02-25T09:33:13.897 回答
1

此外,由于它是“puppet 无法启动服务”的热门 Google 热门歌曲,因此我在 CentOS 上遇到了类似的问题。原来我的问题是由于sudo:我有

Defaults requiretty

在我的sudoers文件中。将此更改为

Defaults requiretty
Defaults:root !requiretty

修复了问题,并允许我的服务脚本(使用 sudo 运行守护程序)通过 puppet 工作。

希望这对未来的 Google 员工有所帮助!

于 2014-12-10T16:59:30.407 回答