Copie toda uma estrutura de diretórios no Chef

7

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 Steve Bennett 17.09.2012 / 03:12

2 respostas

9

Por que não usar o recurso remote_directory . É exatamente para isso.

Veja: link

    
por 07.01.2013 / 14:17
1

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.

    
por 18.09.2012 / 01:47