在Chef-client运行之前可用于搜索的节点

时间:2014-11-07 15:15:38

标签: chef chef-recipe

只是想知道,如果可以在该节点完成Chef-client运行之前搜索节点。

主厨博士说: https://docs.getchef.com/essentials_nodes_chef_run.html

  

当资源中的资源标识所有操作时   收集已经完成,当厨师 - 客户端运行完成   成功,chef-client更新Chef上的节点对象   具有在此chef-client期间构建的节点对象的服务器   跑。 (此节点对象将由厨师 - 客户在期间拉下来   下一个厨师 - 客户端运行。)这使得节点对象(以及中的数据)   节点对象)可供搜索。

     

chef-client始终检查资源集合是否存在   异常和报告处理程序。如果有的话,每一个都是   妥善处理

例如,我有一个配方,用于搜索名为“webserver”的角色的节点。 我通过pychef创建了chef节点,并填充了一些属性和运行列表(包括run_list中的那个角色)。 然后从mahchine启动chef-client,它始终无法找到具有该角色的任何节点,因为它尚未保存,因此无法进行搜索。

使用刀搜索很容易看到,因为返回的搜索的角色属性为空(角色仍在run_list上),当chef-client完成时,角色将移动到正确的位置,node.roles

在进行搜索之前,有没有办法可以强制保存节点,以便它出现在结果中?将厨师节点保留在厨师服务器中可以正常工作,但有一天它可以删除,搜索将不再起作用。

谢谢!

1 个答案:

答案 0 :(得分:1)

总的来说,出于几个原因,这是个坏主意。

  1. 使用ACL系统(Enterprise Chef,Chef Server 12)的任何Chef服务器都存在手动创建节点对象会破坏权限的问题。可以手动更正,但这是一项复杂的任务。
  2. 如果您的查询使用的是rolesrecipes扩展表单,则必须手动填充这些表单,因为该步骤通常由运行列表扩展期间的chef-client完成,然后才会保存回服务器
  3. 在搜索索引中获得部分结果通常会导致服务发现失败,其中非工作服务最终会进入生产轮换。