2013-04-10 6 views
20

मैं chef graphite repoएक आवरण रसोई की किताब

नुस्खा carbon.rb में के लिए एक आवरण रसोई की किताब लिखने के लिए कोशिश कर रहा हूँ में एक टेम्पलेट की जगह, निम्नलिखित लाइनों के होते हैं:

template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do 
    owner node['apache']['user'] 
    group node['apache']['group'] 
end 

जहां टेम्पलेट्स में/डिफ़ॉल्ट /storage-schemas.conf वहाँ एक भंडारण-schemas.conf फ़ाइल है जो मेरी पसंद के लिए नहीं है। मैं फ़ाइल इनलाइन को संपादित कर सकता हूं और जो चाहता हूं उसे प्राप्त कर सकता हूं, लेकिन अगर मैं अपने रिपो को विलय विवादों के बिना अद्यतित रखने में सक्षम होना चाहता हूं तो यह एक अच्छा शेफ अभ्यास जैसा प्रतीत नहीं होता है। तो मैं सोच रहा था कि क्या मैं इसे एक रैपर कुकबुक के साथ हल कर सकता हूं।

मेरी पहली कुछ यद्यपि था जैसे

include_recipe "graphite" 
template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do 
    owner node['apache']['user'] 
    group node['apache']['group'] 
end 

जहां मैं सिर्फ आधार नुस्खा समाप्त करने के बाद आदेश को फिर से चलाएं और फ़ाइल मैं wrappercookbook/टेम्पलेट्स/भंडारण-schemas.conf.erb में चाहते थे जाते थे। क्या यह एक आम प्रथा है? यह बहुत शुष्क नहीं लगता है, लेकिन मैं क्लीनर तरीके से नहीं सोच सकता।

उत्तर

27

आप बहुत करीब हैं: पर "रसोई की किताब छाया" (बहिष्कृत) कि काम करता है आप प्रत्यक्ष नियंत्रण है जिस पर पाक कला पुस्तकें अंत उपयोगकर्ता का उपयोग करेगा जब भरोसा करते हैं। मान लिया जाये कि आप अपने आवरण रसोई की किताब में भंडारण-schemas.conf.erb फ़ाइल का एक संशोधित संस्करण है, तो आप सिर्फ कर सकते हैं:

include_recipe "graphite" 
begin 
    r = resources(:template => "#{node['graphite']['base_dir']}/conf/storage-schemas.conf") 
    r.cookbook "my-cookbook" 
rescue Chef::Exceptions::ResourceNotFound 
    Chef::Log.warn "could not find template to override!" 
end 

तुम भी तरह की एक पंक्ति का उपयोग कर सकते हैं:

r.source "graphite-stuff/my-storage-schemas.conf.erb" 

अगर आप अपनी रैपर कुकबुक में फ़ाइलों को एक अलग तरीके से व्यवस्थित करना चाहते हैं।

+0

शेफ-एकल में काम नहीं कर रहा है, शिकायत करता है कि आधार नुस्खा के बावजूद संसाधन नहीं मिला है। – Noz

1

अपने पैच बनाने और नदी के ऊपर के साथ विलय की सिफारिश की अभ्यास जब knife का उपयोग कर, क्योंकि चाकू आप के लिए स्वचालित रूप से Git शाखा विलय सामान में से कुछ करता है और आप क्या आप शुरू में बदल का ट्रैक रखने के लिए सक्षम कर रहे हैं।

बस अपनी रैपर कुकबुक में फ़ाइलों को ओवरराइट करना एक ऐसा अभ्यास है जिसे मैंने पहले नहीं सामना किया था लेकिन दिलचस्प लग रहा है ^^ नुकसान: आपको अपने संशोधित टेम्पलेट में मैनस्ट्रीम परिवर्तनों को मैन्युअल रूप से बनाए रखना और विलय करना है और यह कभी-कभी गिट करने की तुलना में अधिक काम हो सकता है आपके लिए सबसे अधिक सामान।

तीसरा रास्ता: http://tickets.opscode.com/browse/CHEF-2308

14

डेव के उत्तर के विकल्प के रूप में, आप chef-rewind का भी उपयोग कर सकते हैं।

https://github.com/bryanwb/chef-rewind

GitHub रेपो

# फ़ाइल PostgreSQL/व्यंजनों/server.rb

template "/var/pgsql/data/postgresql.conf" do 
    source "postgresql.conf.erb" 
    owner "postgres" 
end 

# फाइल मेरी-PostgreSQL/व्यंजनों/सर्वर से एक त्वरित उपयोग का उदाहरण देखने। आरबी

chef_gem "chef-rewind" 
require 'chef/rewind' 

include_recipe "postgresql::server" 
# my-postgresql.conf.erb located inside my-postgresql/templates/default/my-postgresql.conf.erb 
rewind :template => "/var/pgsql/data/postgresql.conf" do 
    source "my-postgresql.conf.erb" 
    cookbook_name "my-postgresql" 
end 
संबंधित मुद्दे