厨师集成任务的最佳实践

我是新来的厨师(使用托pipe的厨师服务器)和混淆好,基本上了解如何configuration个人服务器。 我遇到的麻烦是搞清楚如何将各种configuration服务器集成到一个function集群中。

在我目前的使用案例中,我正在使用Amazon EC2。 我正在使用带有less量清漆服务器的负载均衡器,它将请求传递到连接到RDS服务器的多个前端应用程序服务器。 我也有一个后端实用程序服务器,它偶尔会将某些文件同步到FE应用程序服务器。

你将如何将所有这一切粘合在一起? FE服务器需要知道rds实例和redis服务器,但是后端有限服务器和清漆节点必须知道FE应用服务器。 理想情况下,应用程序服务器将实现某种自动调节,其中根据需要调配更多节点。

最后,还需要开发人员和阶段环境以及清漆服务器与应用程序服务器在同一个虚拟机上。

您是否使用标记来sortingFE节点,然后在清漆和BE服务器上最后运行食谱时查询这些值?

我只是寻找一些最佳实践,我会认为这是一个相当常见的n层networking集群用例。

你的问题没有说明你是使用厨师客户还是厨师独奏,所以我会假设前者。

两个厨师的结构与你的问题特别相关: search和环境 。

由于Chef服务器正在索引节点的所有已知属性,因此可以使用search来根据任何属性(例如其运行列表的内容或已分配给该节点的任何标签)定位节点。 假设你有一个configuration你的redis服务器的配方(或angular色),configuration你所描述的FE应用服务器的配方可以search在其运行列表中具有redis配方的节点,并使用该节点的属性来填充应用configuration文件。 同样,configuration你的Varnish服务器的配方可以search你的应用服务器,并用他们的地址填充Varnishconfiguration文件。

环境可以被认为是一种特殊的标签,当您只想知道属于同一个逻辑集合的节点时,可以用它来限制search查询的范围。 除了用作标签,Chef环境也可以用来覆盖节点属性并强制实施cookbook版本locking。

这些结构都不能直接用于发现像RDS这样的基础设施部分,而不能直接运行Chef,但是因为您可以在配方中使用“raw”ruby,像fog或right_aws这样的库可以查询AWS API的细节(例如,哪些RDS实例存在以及他们的地址是什么),并且可以使用已经应用的任何标签过滤结果。

通过将像雾一样的图书馆与厨师的searchfunction相结合,您应该能够search自己的方式来实现云集成自动化的必杀技。 直到下一次美东大停工。