Chef - recurso de modelo dinâmico de vários arquivos

4

Estou tentando encontrar uma maneira de aplicar o recurso de modelo dinamicamente em todos os arquivos que estão em uma pasta dentro da pasta de modelos do livro de receitas. algo como:

Dir.foreach("../templates/default/shared/") do | file | # This is the wrong line...
  template "/home/admin/shared/#{file}" do
    source "shared/#{file}"
    …
  end
end

como posso fazer isso? Eu estou tentando evitar ter uma lista separada de todos os arquivos neste diretório como uma variável ... obrigado.

    
por SecondThought 23.12.2012 / 16:43

1 resposta

3

Seu código será executado no contexto de um nó, portanto, seu código Ruby ( Dir.foreach ) precisará examinar o cache local do nó. Na minha instalação do Chef, o caminho do cache local é necessário para o meu modelo de configuração chef-client, portanto, eu tenho este atributo: node[:chef][:cache_path] .

Então:

Dir.foreach("#{node[:chef][:cache_path]}/cookbooks/the_cookbook/templates/default/shared/")

EDITAR: Nas configurações modernas do Chef, os modelos não existirão no servidor até que sejam necessários. Você precisará adicioná-lo ao seu client.rb :

no_lazy_load true
    
por 23.12.2012 / 17:48