使用Chef参数化节点关系

时间:2015-06-02 18:32:38

标签: chef chef-recipe

我有一组服务器执行特定角色,它们之间存在依赖关系,即

web server -> application server -> database server

我有可以使用这些角色构建节点的Chef cookbook。我使用Chef生成每个节点的hosts文件,并使用hosted Chef Server。到现在为止还挺好。我无法理解的是如何灵活地表示具有不同角色的节点之间的关系。

灵活地说,我的意思是在开发中我可能只有一个节点可以完成所有三个角色,而在登台和生产环境中,每个角色至少会分成一个节点。

我不清楚如何参数化主机文件的生成以满足此要求。其他人如何处理这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您是否有厨师服务器设置/托管厨师?

Chef在每个聚合上运行一个名为ohai的工具,它收集有关节点的所有信息(例如IP地址,接口,存储,包数据)并将其写入node对象。当融合完成时,chef-client会将节点对象数据上传到将存储它的chef-server,并可供所有其他节点/客户端搜索:

手动:http://docs.chef.io/chef_search.html

取决于您如何拆分舞台,例如使用不同的厨师环境,使用标签或一些自定义逻辑,您可以动态构建/etc/hosts文件,使用搜索重新配置负载平衡器和防火墙规则。示例:https://serverfault.com/questions/412127/chef-recipe-read-attributes-from-another-node

如果您没有使用基于Chef-Server的设置,则无法进行此操作。你必须手动"描述"您的基础架构/拓扑,例如在数据包或属性中。