深入探索Chef定制化:从运行事件到食谱定制
1. Chef运行事件相关问题与思考
在使用Chef的过程中,有几个关键的时间问题值得关注:
- 节点在运行开始时向Chef服务器注册需要多长时间?
- Chef从服务器获取食谱版本列表究竟需要多长时间?
- 客户端获取到该列表后,食谱同步过程需要多长时间?
Chef的事件调度系统目前的应用主要集中在改变chef-client的输出格式,或者将数据发送到监控和指标系统。我们不妨思考一下,是否能为这些数据挖掘出一些新的用途。对于有兴趣查看自定义订阅类实际示例的读者,可以研究由Chef公司创建的chef - reportinggem。它能让较旧版本的chef - client将报告数据发送到Enterprise Chef,以使用其报告功能(开源Chef服务器不提供此功能)。虽然代码与Chef的报告系统紧密相关,但它能很好地展示如何实现一个更复杂的事件调度订阅器,将事件数据发送到外部系统。
2. AwesomeInc的定制化决策
假设AwesomeInc面临一个问题:如何发现Chef运行失败的情况以及失败原因?Chef为几乎所有定制类型(除了Ohai插件)都提供了失败运行的数据。那么,AwesomeInc应该选择异常处理程序、格式化程序还是自定义事件调度订阅器呢?在不了解AwesomeInc具体需求和数据展示方式的情况下,答案是不确定的。
我们来看看AwesomeInc的相关情况:
- 监控系统:主要使用Nagios和Graphite监控系统,存在一些监控盲