使用 Chef 参数化节点关系
Parameterising node relationships using Chef
我有一组服务器执行特定角色,它们之间存在依赖关系,即
web server -> application server -> database server
我有可以使用这些角色构建节点的 Chef 食谱。我正在使用 Chef 生成每个节点的主机文件并使用 hosted Chef Server。到目前为止,一切都很好。我不太了解的是如何灵活地表示具有不同角色的节点之间的关系。
我所说的灵活是指在开发中我可能只有一个节点来满足所有三个角色,而在暂存和生产环境中,每个角色至少会被分成一个节点。
我不清楚如何参数化主机文件的生成以满足此要求。其他人如何解决这个问题?
提前致谢。
你们有厨师服务员吗setup/hosted厨师?
Chef 在每个聚合器上运行一个名为 ohai
的工具,该工具收集有关节点的所有信息(例如 IP 地址、接口、存储、包数据)并将其写入 node
对象。收敛完成后,chef-client 会将节点对象数据上传到 chef-server,它将被存储并可用于从所有其他 nodes/clients:
进行搜索
手动:http://docs.chef.io/chef_search.html
取决于您如何划分阶段,例如使用不同的厨师环境,使用标签或一些自定义逻辑,您可以动态构建一个 /etc/hosts
文件,使用搜索重新配置负载平衡器和防火墙规则。示例:https://serverfault.com/questions/412127/chef-recipe-read-attributes-from-another-node
如果您使用的不是基于 Chef-Server 的设置,则这是不可能的。您必须手动 "describe" 您的 infrastructure/topology,例如在数据包或属性中。
我有一组服务器执行特定角色,它们之间存在依赖关系,即
web server -> application server -> database server
我有可以使用这些角色构建节点的 Chef 食谱。我正在使用 Chef 生成每个节点的主机文件并使用 hosted Chef Server。到目前为止,一切都很好。我不太了解的是如何灵活地表示具有不同角色的节点之间的关系。
我所说的灵活是指在开发中我可能只有一个节点来满足所有三个角色,而在暂存和生产环境中,每个角色至少会被分成一个节点。
我不清楚如何参数化主机文件的生成以满足此要求。其他人如何解决这个问题?
提前致谢。
你们有厨师服务员吗setup/hosted厨师?
Chef 在每个聚合器上运行一个名为 ohai
的工具,该工具收集有关节点的所有信息(例如 IP 地址、接口、存储、包数据)并将其写入 node
对象。收敛完成后,chef-client 会将节点对象数据上传到 chef-server,它将被存储并可用于从所有其他 nodes/clients:
手动:http://docs.chef.io/chef_search.html
取决于您如何划分阶段,例如使用不同的厨师环境,使用标签或一些自定义逻辑,您可以动态构建一个 /etc/hosts
文件,使用搜索重新配置负载平衡器和防火墙规则。示例:https://serverfault.com/questions/412127/chef-recipe-read-attributes-from-another-node
如果您使用的不是基于 Chef-Server 的设置,则这是不可能的。您必须手动 "describe" 您的 infrastructure/topology,例如在数据包或属性中。