为什么木偶不能启动Dropbox守护进程?

时间:2012-02-08 22:33:47

标签: ubuntu dropbox puppet

我在Ubuntu 11.10上使用Dropbox command-line utility/daemon,但它不能与Puppet一起使用。

我可以手动成功控制Dropbox:

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

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

(/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“status”命令对Puppet不起作用,因为即使Dropbox已经运行,我也会收到相同的错误消息(“无法启动”)。

有什么想法吗?

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:1)

为了增加这一点,因为它是一个受欢迎的谷歌打击"木偶无法启动服务",我在CentOS上遇到了类似的问题。事实证明我的问题是由于 sudo :我有

Defaults requiretty

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

Defaults requiretty
Defaults:root !requiretty

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

希望这有助于未来的Google员工!