Arquivos / modelos compartilhados entre livros de receitas

11

Temos vários livros de receitas que referenciam os mesmos arquivos e modelos e ficamos imaginando se existe uma maneira razoável de garantir que todos eles sejam o mesmo arquivo para garantir que nenhum fique desatualizado. É possível ter um único arquivo / modelo referenciado por várias receitas / livros de receitas? Pensei em usar links simbólicos, no entanto, isso não funcionará para nós, pois o Git não os suporta.

Gdurham
fonte

Respostas:

17

Os recursos cookbook_file e template suportam um parâmetro "cookbook" que especifica qual livro de receitas contém o arquivo de origem. Em seguida, você pode criar um livro de receitas "comum", onde esses arquivos vivem como uma única entidade. Por exemplo:

% cookbooks/commons
cookbooks/commons
|-- files
|   `-- default
|       `-- master.conf
`-- templates
    `-- default
        `-- general.conf.erb

Suponha que você tenha dois livros de receitas, coisa1 e coisa2, e os dois os usem. As receitas podem ser:

# thing1/recipes/default.rb
cookbook_file "/etc/thing1/master.conf" do
  source "master.conf"
  cookbook "commons"
end

template "/etc/thing1/general.conf" do
  source "general.conf.erb"
  cookbook "commons"
end

# thing2/recipes/default.rb
cookbook_file "/etc/thing2/like_master_but_different.conf" do
  source "master.conf"
  cookbook "commons"
end

template "/etc/thing2/not_as_general_as_you_think.conf" do
  source "general.conf.erb"
  cookbook "commons"
end

No entanto, eu perguntaria por que você tem duplicação entre diferentes tipos de funcionalidade em seus livros de receitas? Ou seja, esse tipo de coisa seria adequado para um recurso / provedor leve personalizado que você usa?

jtimberman
fonte
1
Obrigado pelo exemplo e pela outra solução. Isto é perfeito!
Gdurham