Por que não usar o recurso remote_directory
.
É exatamente para isso.
Veja: link
Eu tenho uma estrutura de diretórios (dados de amostra) que desejo copiar de uma receita do Chef. Parece que a única maneira de fazer isso é explicitamente criar cada diretório e arquivo individual:
directory "/mnt/data/experiment1/dataset1" do
recursive true
only_if { node.chef_environment == "dev" }
end
directory "/mnt/data/experiment1/dataset2" do
recursive true
only_if { node.chef_environment == "dev" }
end
directory "/mnt/data/experiment2/dataset1" do
recursive true
only_if { node.chef_environment == "dev" }
end
directory "/mnt/data/experiment1/dataset2" do
recursive true
only_if { node.chef_environment == "dev" }
end
cookbook_file "/mnt/data/experiment1/dataset1/testfile1.txt" do
owner "atom"
group "atom"
mode "0644"
source "sampledata/experiment1/dataset1/testfile1.txt"
only_if { node.chef_environment == "dev"}
end
...
Existe uma maneira de copiar recursivamente uma estrutura de diretórios inteira do livro de receitas? Especificar o nome de cada arquivo dentro da receita parece redundante e propenso a erros (ou seja, se adicionarmos um arquivo à árvore, mas esquecermos de referenciá-lo na receita, ele não será copiado).
Eu acho que uma solução alternativa seria descobrir onde todos os arquivos do chef são copiados na máquina de destino e fazer um cp -r
, mas há algo mais limpo?
Ou eu estou indo sobre isso da maneira errada?
Por que não usar o recurso remote_directory
.
É exatamente para isso.
Veja: link
file_cache_path lhe dirá onde os livros de culinária estão localizados na máquina de destino
Portanto, você só precisa sincronizar o diretório do seu livro de receitas em file_cache_path com o local de destino. Você poderia fazer isso com um cp -r
, um ruby_block usando FileUtils # cp_r , ou alguma outra inteligência que eu não tenha pensado.