【问题标题】:How to access current values from a Chef data bag?如何从 Chef 数据包中访问当前值?
【发布时间】:2012-05-06 07:54:55
【问题描述】:

我有一台由 Chef 管理的服务器。 我需要从不是由 Chef 运行的脚本访问一些存在于食谱数据包中的值。

/* Chef REST API 允许访问 Chef 服务器所看到的数据包值。这不是我想要的。每次chef-client 运行可能会引入许多协调更改,包括数据包中的更改。如果服务器上的数据已经更改,但chef-client 尚未在本地运行,则本地设置和服务器端数据包可能不同步。 */

我看到了两种解决方案:

  • 解析/导入/var/cache/chef/cookbooks/<book-name>下的数据包文件,因为它或多或少是普通的Ruby。
  • 在配方中,将数据包中的相关数据转储到可从我的脚本访问的纯文件中。

有更好的选择吗?

【问题讨论】:

  • 你不能在厨师食谱中做你想做的事有什么原因吗?
  • @乔丹:不;这可以通过食谱来完成,因为这似乎是唯一简单的选择。这就是公认的答案所建议的。

标签: chef-infra


【解决方案1】:

将节点哈希或数据包中的数据转储到单独的文件中是在 Chef 服务器和节点上运行的脚本之间进行通信的好方法。如果您的脚本可以解析 JSON,那真的很容易:

file "/etc/script.json" do
  owner "root"
  group "root"
  mode 0644
  content node[:whatever].to_json
 end

使用 Chef REST 接口听起来有点矫枉过正,在 /var/cache/chef 中摸索是不礼貌的。 (-:

【讨论】:

    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多