Puppet无法重新启动服务

Puppet无法重新启动服务,puppet,Puppet,Docker守护进程有时会在puppet管理的服务器上崩溃 如果这种情况发生,傀儡应该会把它带回来,但没有这样做,我想我知道为什么。从调试日志中,我可以看到puppet正在执行以下操作: rc-service docker status rc-service docker start 在崩溃的Docker上手动执行相同操作会显示: rc-service docker status; echo $? * status: crashed 32 rc-service docker start;

Docker守护进程有时会在puppet管理的服务器上崩溃

如果这种情况发生,傀儡应该会把它带回来,但没有这样做,我想我知道为什么。从调试日志中,我可以看到puppet正在执行以下操作:

rc-service docker status
rc-service docker start
在崩溃的Docker上手动执行相同操作会显示:

rc-service docker status; echo $? 
* status: crashed
32

rc-service docker start; echo $?
 * WARNING: docker has already been started
0
看起来它工作正常,但服务仍未运行:

rc-service docker status; echo $? 
* status: crashed
32
我想做的是:

rc-service docker restart
傀儡配置如下所示:

service { ['docker']: 
  ensure => 'running',  
  enable => true,  
  hasrestart => true,
}

如何配置Puppet在这种情况下使用重启?

您可以使用服务资源中的相应属性指定启动、停止、状态和重启的确切命令:。然而,这将变得很麻烦,因为您正在使用restart命令作为start命令,但从技术上讲,它不应该破坏任何东西

service { 'docker':
  ensure => running,
  enable => true,
  start  => 'rc-service docker restart',
}

我建议验证您的假设,即rc service docker restart在docker服务崩溃后,在继续此路径之前,实际上成功地重新启动了docker服务,否则,这将无法解决您的根本原因。

您抢先一步。虽然这涉及到欺骗Puppet在它想要启动时重新启动,但我可能会使用它-它成功了,谢谢!OpenRC是否将崩溃区分为独立于未运行的状态,因此某些initscripts的启动操作无法启动崩溃的服务是合理的?如果是这样,那么这应该作为一个反对傀儡的问题提出。否则,它反映了Docker中的一个缺陷,可能应该在那里提出。