【问题标题】:Where is the cookbook_file stored on Chef Server厨师服务器上存储的食谱文件在哪里
【发布时间】:2014-09-03 06:45:59
【问题描述】:

我创建了一个非常基本的食谱:

cookbook_file "cookbook_test_file" do
  path "/tmp/test_file123"
  action [:create_if_missing, :create]
end

我还在我的食谱中的 files->default 下创建了 cookbook_test_file 文件,并将食谱添加到运行手册中。

一切都很完美。 该文件被传播到客户端。如果在客户端上更改了文件,那么下次我运行 chef-client - 文件将按预期更新。没有问题。

但是,我在 Chef 服务器上的任何地方都找不到 cookbook_test_file。我尝试完全限定该文件的默认目录,如下所示: /usr/local/bin/cookbook_test_file 但无济于事。

这些文件存储在 Chef 服务器的什么位置? ?我也没有在 PostgreSQL 数据库中看到它。

谢谢。

【问题讨论】:

  • 你为什么在乎?内容哈希存储的影响之一是您无法更改服务器上的内容(因为更改它们会更改它们的哈希值),因此即使知道它们在哪里,您也不能轻易更改它们......而且不是由于重定向层,很容易知道它们在哪里。
  • 感谢您的回答。我只想看看文件是否正确上传。那么指定完整路径并仅指定文件名是否有意义?

标签: chef-infra


【解决方案1】:

它们最终存储在书架文件存储中,但不是以直接可用的方式。查看/var/opt/chef-server/bookshelf,这些文件是按内容哈希存储的,并且前面有一个CRC校验。

文件元数据都存储在 Postgres 中,无论是沙盒数据还是食谱版本。

【讨论】:

  • 感谢您的解释。
【解决方案2】:

@coderanger 提供了我认为您正在寻找的答案。

我想补充的是,这把刀可用于检查作为食谱的一部分上传的内容。以下示例返回 apache2 说明书中的所有文件:

$ knife cookbook show apache2 2.0.0 files -Fj
[
  {
    "name": "apache2_module_conf_generate.pl",
    "path": "files/default/apache2_module_conf_generate.pl",
    "checksum": "424ea6efb9da5b8cd9739f7f0f1fc9d5",
    "specificity": "default",
    "url": "http://127.0.0.1:8889/file_store/checksums/424ea6efb9da5b8cd9739f7f0f1fc9d5"
  }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多