【问题标题】:Node available for search before chef-client run在厨师客户端运行之前可用于搜索的节点
【发布时间】:2015-01-04 10:12:38
【问题描述】:

只是想知道,是否可以在节点完成厨师客户端运行之前搜索节点。

按照主厨文档: https://docs.getchef.com/essentials_nodes_chef_run.html

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

厨师客户端总是检查资源集合是否存在 异常和报告处理程序。如果有的话,每一个都是 处理得当

例如,我有一个配方可以搜索具有名为“webserver”的角色的节点。 我通过 pychef 创建了 chef 节点,并填充了一些属性和运行列表(包括 run_list 中的那个角色)。 然后从机器启动chef-client,它总是找不到任何具有该角色的节点,因为它没有被保存,所以它不可用于搜索。

用刀搜索很容易看到,因为返回搜索的角色属性是空的(角色仍在 run_list 上),当厨师客户端完成时,角色被移动到正确的位置,node.roles .

有没有办法在搜索之前强制保存节点,以便它出现在结果中?将主厨节点保留在主厨服务器中是有效的,但有一天可能会被删除,搜索将不再有效。

谢谢!

【问题讨论】:

  • 不。这是不可能的。

标签: chef-infra chef-recipe


【解决方案1】:

一般来说这是一个坏主意,有几个原因。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多