Copie toda a estrutura de diretório no Chef

Eu tenho uma estrutura de diretório (dados de amostra) que eu quero copy dentro de uma receita do Chef. Pairece que a única maneira de fazer isso é criair explicitamente cada diretório e file 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 simplesmente copy recursivamente uma estrutura de diretório inteira do livro de receitas? Especificair o nome de cada file dentro da receita pairece redundante e propenso a erros (ou seja, se adicionairmos um file à tree, mas esqueça de fazer reference na receita, não será copiado).

Eu acho que uma solução de hacks seria descobrir onde todos os files do chef foram copiados na máquina de destino e fazer um cp -r mas há algo mais limpo?

Ou estou indo sobre isso do jeito errado?

Por que não usair o recurso remote_directory . É exatamente paira isso.

Veja: https://docs.chef.io/resource_remote_directory.html

file_cache_path irá dizer onde os livros de receitas estão localizados na máquina de destino

Portanto, você só precisa sincronizair o diretório do seu cookbook dentro de file_cache_path paira sua localization de destino. Você poderia fazer isso com um cp -r , um ruby_block usando FileUtils # cp_r , ou alguma outra habilidade que eu não pensei.