是否可以从Chef配方中设置数据包值?

时间:2016-09-08 21:01:54

标签: chef chef-recipe databags

是否可以从厨师食谱中设置数据包值?我需要从一个特定节点收集一些信息,然后与另一个节点共享。我想在食谱里面做,而不是用刀手动。

1 个答案:

答案 0 :(得分:2)

TL; DR

你在技术上可以做到这一点,但不要这样做。 Data bags不应动态修改。这将使系统状态几乎无法推理。

相反,使用ohai在运行时收集有关本地节点的信息,或使用ruby_block查询远程节点上的ohai或其他数据收集活动。

不要做

此用例在Chef data bag documentation内专门解决。文档说没有这样做,并解释了原因。

  

建议不要从食谱中创建和编辑数据包或数据包项的内容。更新数据包或数据包项目的推荐方法是使用刀和刀数据包子命令。如果必须从配方中执行此操作,请注意以下事项:

     
      
  • 如果两个操作同时尝试更新数据包的内容,则最后写入的尝试将是更新数据包内容的操作。这种情况可能导致数据丢失,因此组织应采取措施确保一次只有一位厨师 - 客户对数据包进行更新。

  •   
  • 使用开源Chef服务器时,从节点更改数据包需要为节点的API客户端授予管理员权限。在大多数情况下,这是不可取的。

  •   

如果您决定这样做,文档提供了一些有限的指导。但是,如果你打破它,你可以保持两半。 :)