2014-09-02 100 views
0

我創建了一個非常基本配方上:哪裏cookbook_file存儲廚師服務器

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

我也下創建文件 - >默認cookbook_test_file文件在我的食譜,並添加配方到運行書。

一切正常。 文件傳播到客戶端。如果在客戶端上更改了文件,那麼下次運行chef-client時 - 文件會按預期更新。沒有問題。

但是,我找不到廚師server.I試圖完全限定的默認目錄如下文件cookbook_test_file任何地方: 在/ usr/local/bin目錄/ cookbook_test_file但無濟於事。

這些文件在廚師服務器上存儲在哪裏? ?我也沒有在PostgreSQL數據庫中看到它。

謝謝。

+0

爲什麼你在意?內容哈希存儲的一個影響是你不能改變服務器上的東西(因爲改變它們會改變它們的哈希值),所以即使知道它們在哪裏,你也不能輕易改變它們......並且它不是很容易知道它們在重定向層的位置。 – 2014-09-02 21:00:24

+0

謝謝你的回答。我只想看看文件是否正確上傳。那麼指定完整路徑並僅指定文件名是否有意義? – browser30 2014-09-02 21:20:47

回答

2

它們最終放在書架文件存儲器中,但不是以直接可用的方式。查看/var/opt/chef-server/bookshelf,這些文件是通過內容哈希存儲的,並且有CRC校驗。

雖然文件元數據存儲在Postgres中,但無論是在沙盒數據還是在食譜版本中。

+0

感謝您的解釋。 – browser30 2014-09-02 21:19:58

0

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