cookbook_file存储在Chef Server上的哪个位置

时间:2014-09-02 20:57:27

标签: chef

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

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

我还在cookbook中的files->默认下创建了cookbook_test_file文件,并将配方添加到了运行手册中。

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

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

这些文件存储在厨师服务器上的哪个位置? ?我没有在PostgreSQL数据库中看到它。

谢谢。

2 个答案:

答案 0 :(得分:2)

它们最终出现在书架文件存储中,但不是直接可用的方式。查看/var/opt/chef-server/bookshelf,文件按内容哈希存储,并在其前面加上CRC校验。

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

答案 1 :(得分:0)

@coderanger已经提供了你想要的答案。

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

$ 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"
  }
]