Chef infra Chef服务器上存储的cookbook_文件在哪里

Chef infra Chef服务器上存储的cookbook_文件在哪里,chef-infra,Chef Infra,我创建了一个非常基本的配方: cookbook_file "cookbook_test_file" do path "/tmp/test_file123" action [:create_if_missing, :create] end 我还在我的食谱中的files->default下创建了食谱\u test\u文件,并将食谱添加到运行手册中 一切都很完美。 该文件被传播到客户端。如果在客户端上更改了文件,那么下次运行chef客户端时,该文件将按预期更新。没有问题 但是,我在chef服

我创建了一个非常基本的配方:

cookbook_file "cookbook_test_file" do
  path "/tmp/test_file123"
  action [:create_if_missing, :create]
end
我还在我的食谱中的files->default下创建了食谱\u test\u文件,并将食谱添加到运行手册中

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

但是,我在chef服务器上的任何位置都找不到cookbook_test_文件。我尝试按如下方式完全限定该文件的默认目录: /usr/local/bin/cookbook\u test\u文件,但无效

这些文件存储在chef服务器的何处?我也没有在PostgreSQL数据库中看到它


谢谢。

它们最终被放在书架上的文件存储中,但不能直接使用。查看
/var/opt/chef server/bookshelf
,这些文件是通过内容哈希存储的,并且在它们前面有一个CRC检查


不过,文件元数据都存储在Postgres中,无论是沙盒数据还是烹饪书版本。

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

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