File / template yang dibagikan di antara buku masak

11

Kami memiliki beberapa buku masak yang mereferensikan file dan template yang sama dan bertanya-tanya apakah ada cara yang masuk akal untuk memastikan semua ini adalah file yang sama untuk memastikan tidak ada yang ketinggalan zaman. Apakah mungkin untuk membuat satu file / template direferensikan oleh beberapa resep / buku resep? Saya berpikir untuk menggunakan symlink, namun ini tidak akan bekerja untuk kami karena Git tidak mendukungnya.

gurham
sumber

Jawaban:

17

Cookbook_file dan sumber daya templat mendukung parameter "buku masak" yang menentukan buku masak mana yang berisi file sumber. Kemudian Anda bisa membuat buku masak "commons" tempat file-file itu hidup sebagai satu kesatuan. Sebagai contoh:

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

Misalkan Anda memiliki dua buku masak, thing1 dan thing2, dan keduanya menggunakan ini. Resepnya mungkin:

# 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

Namun, saya akan bertanya mengapa Anda memiliki duplikasi antara berbagai jenis fungsi di buku masak Anda? Yaitu, apakah hal semacam ini cocok untuk sumber daya ringan / penyedia kustom yang Anda gunakan?

jtimberman
sumber
1
Terima kasih atas contohnya serta solusi lainnya. Ini sempurna!
gdurham