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
我想让Puppet做什么:
rc-service docker restart
Puppet配置如下所示:
service { ['docker']:
ensure => 'running',
enable => true,
hasrestart => true,
}
如何在这种情况下配置Puppet使用重启?
答案 0 :(得分:1)
您可以使用service
资源中的相应属性指定启动,停止,状态和重新启动的确切命令:https://docs.puppet.com/puppet/latest/types/service.html#service-attributes。然而,这将成为" hacky"因为你正在使用一个启动命令的重启命令,但它在技术上不会破坏任何东西。
service { 'docker':
ensure => running,
enable => true,
start => 'rc-service docker restart',
}
我建议验证您假设rc-service docker restart
在崩溃之前实际成功重启停靠服务,然后再沿着此路由崩溃,否则这不会解决您的根本原因。