2013-10-23 55 views
3

我有一本用於安裝基本產品(Mediaflux)的食譜,以及爲特定專用用例(DaRIS)量身定製的第二本食譜。第一本食譜的食譜是運行「基本安裝」,第二本的食譜運行「定製」安裝。將兩個主廚食譜中的兩個模板結合起來

有一次,我有一個由基本食譜/食譜創建的文件,需要在第二食譜/食譜中添加額外的東西。在這兩種情況下,該文件都需要模板擴展。

我想找出一個很好的方法來實現這一點。

  • 最簡單的想法是有模板的兩個食譜複印件,並同時擁有食譜擴大自己版本的模板,並依靠2號配方覆蓋由第一個創建的文件。

    • 這不是DRY,因爲我有兩個模板副本。

    • 我不確定這是「猶太教徒」......有一個模板擴展clobber另一個。

  • 一種變化是將嘗試僅具有一個模板膨脹(在基礎配方)和參數的食譜名...,使得加入第二個配方的運行列表導致使用第一個不同版本的模板。

    • 這也不是乾的。

    • 存在基本配方不知道模板的剪裁配方擴展參數的問題。 (可能是模板可以直接讓他們從節點屬性...)

理想情況下,我想能夠做到下列之一:

  • 創建展開時組合了兩個(DRY)模板的模板。

  • 附加到由第一個配方創建的文件的方式展開第二個(剪裁)模板。

  • 獲取「模板」資源以在單個操作中將兩個模板展開爲一個文件。

有沒有辦法做這些事情?

是否還有另一種我錯過的方法?

回答

3

廚師documentation描述了可選的「食譜」屬性,使您能夠從那裏模板應被檢索註明:

template "/path/to/this/file" do 
    source "file.erb" 
    cookbook "myothercookbook" 
    mode 0440 
    owner "me" 
    group "me" 
    variables({ 
    :var1 => node[:mycurrentcookbook][:var1], 
    :var2 => node[:mycurrentcookbook][:var2] 
    }) 
end 

這使得重新使用常見的模板。