我们定期重新启动R&D用于服务器修补和其他额外维护的Linux和Windows服务器。许多不同的服务和开发环境托管在服务器上,需要在重新启动服务器之前和之后停止/启动。
Puppet可以用来启动服务,并确保服务在工作时间内运行(作为守护进程)。我们可以在重新启动服务器之前使用Puppet停止服务吗?我正在考虑分别编写启动和停止清单,禁用启动清单,然后手动应用停止清单。
但是,如果启动服务清单未被禁用,并且"重新启动"所依赖的资源正在尝试停止服务,而守护程序代理正在确保保持服务启动。我想知道届时会发生什么。
知道吗?
我的建议是引入插装(除了配置管理)。看看MCollective[1]和Nanite[2]。两者都允许您编写自定义代理来执行自定义操作。MCollective具有与Puppet紧密集成的优势。你可以用它来编写自定义代理,作为部署工作流程的一部分,这将停止服务等。无论如何,看看它是否对你有用。
- http://puppetlabs.com/mcollective/introduction/
- https://github.com/ezmobius/nanite
可以。
根据您的配置:
- 如果puppet发送了重新启动信号,您可以在通过ssh重新启动之前执行一个命令:
ssh user@machine "command"
命令可能在哪里:
service your_service stop
- 如果puppet不知道机器何时将重新启动/关闭,您可以添加一个钩子,以便在关闭时执行脚本(停止服务)