是否可以从厨师食谱中设置数据包值?我需要从一个特定节点收集一些信息,然后与另一个节点共享。我想在食谱里面做,而不是用刀手动。
答案 0 :(得分:2)
你在技术上可以做到这一点,但不要这样做。 Data bags不应动态修改。这将使系统状态几乎无法推理。
相反,使用ohai在运行时收集有关本地节点的信息,或使用ruby_block查询远程节点上的ohai或其他数据收集活动。
此用例在Chef data bag documentation内专门解决。文档说没有这样做,并解释了原因。
建议不要从食谱中创建和编辑数据包或数据包项的内容。更新数据包或数据包项目的推荐方法是使用刀和刀数据包子命令。如果必须从配方中执行此操作,请注意以下事项:
如果两个操作同时尝试更新数据包的内容,则最后写入的尝试将是更新数据包内容的操作。这种情况可能导致数据丢失,因此组织应采取措施确保一次只有一位厨师 - 客户对数据包进行更新。
使用开源Chef服务器时,从节点更改数据包需要为节点的API客户端授予管理员权限。在大多数情况下,这是不可取的。
如果您决定这样做,文档提供了一些有限的指导。但是,如果你打破它,你可以保持两半。 :)