我已经创建了一个非常基本的食谱:
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数据库中看到它。
谢谢。
答案 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"
}
]