2017-03-09 28 views
1

上的幾個文件我需要調配位於調配機器的另一個目錄下目錄下的多個文件。調配位於文件夾

因此,我需要位於files/scripts/*.painless下的廚師資源庫中的一些文件位於provisiong機器的文件夾(#{es_config_r.path_conf}/scripts/)上。

有沒有辦法做到這一點,或者我需要一個一個的配置?

我不,如果我已經解釋這麼好......

+0

你是指那些來自cookbooks'files /'文件夾下的文件? – StephenKing

+0

我想將所有的'files/scripts /'文件提供給'#{es_config_r.path_conf}/scripts /'。 – Jordi

+0

並且該文件夾位於您要供應的節點上(因爲您之前下載並解壓縮了ES/Kibana)或者是否在您的食譜中? – StephenKing

回答

2

爲了從你的食譜中files/文件夾中放置的所有文件,可以使用remote_directory資源,如下所示:

remote_directory "#{es_config_r.path_conf}/scripts/" 

應該已經完成​​了這項工作,因爲您在兩側都使用文件夾名稱scripts/

爲了讓示例更清晰一點,您可以在files/scripts/painless/中放置無痛腳本。

remote_directory "#{es_config_r.path_conf}/scripts/" do 
    source "scripts/painless" 
end 
+0

對於此任務,我認爲使用[cookbook_file](https://docs.chef.io/resource_cookbook_file.html)資源是比remote_file更合適的方法。由於它在文檔中說:'使用cookbook_file資源從COOKBOOK_NAME /文件的子目錄的文件傳輸/到位於運行的廚師client.' – Navarro

+0

同樣適用於'remote_folder'主機上的指定路徑,儘管我發現所選名稱有點混亂('remote_folder'不像'remote_file)'那樣工作。文檔在這裏說:'使用remote_directory資源來增量式地將食譜目錄從一本食譜轉移到一個節點。從食譜中複製的目錄應位於COOKBOOK_NAME/files/default/REMOTE_DIRECTORY下.' – StephenKing

-1

您可以部署使用資源cookbook_file包含了一本食譜中的文件:此文件夾中的內容可以如下供應。

用一個簡單的循環,可以部署在該目錄中的所有文件,是這樣的:

%w(foo bar zaz).each do |script| 
    cookbook_file "/path/to/#{script}" do 
    source "scripts/#{script}" 
    owner 'MrBean' 
    group 'ITV' 
    mode '0754' 
    end 
end 

假設對於這一點,當然,前提是你有你的腳本在你的食譜目錄下your_cookbook/files/scripts/

其他更優雅的選項是保留腳本文件列表作爲烹飪書的屬性,因此您可以在每臺機器的基礎上部署一個dinamically腳本。 (例如,不保留與mysql管理httpd服務器相關的腳本)

+0

在'remote_directory'變爲可用之前應該做到這一點。 – StephenKing

+0

通過這樣做,您可以更好地控制將哪些文件部署在哪臺機器上,而不必在不同目錄中存儲相同腳本的冗餘副本。 – Navarro

相關問題