2012-01-20 12 views
23

मैं अपने विकास वातावरण को वाग्रेंट में माइग्रेट करने के लिए क्या करूँगा और मुझे शेफ के साथ वीएम प्रावधान प्रक्रिया पर एक संभाल करने में कुछ परेशानी हो रही है। मैंने इस क्षेत्र में जानबूझकर कमजोर (दायरे से बाहर) पहले कभी भी वाफ्रंट दस्तावेज़ों का उपयोग नहीं किया है, इसलिए मैं हाथ का उपयोग कर सकता था।प्रोविजनिंग वग्रेंट डब्ल्यू/शेफ

मैं इस रूप में संभव के रूप में पोर्टेबल बनाने के लिए चाहते हैं, इसलिए मैंने सोचा कि यह किसी URL से लोड करने के लिए पाक कला पुस्तकें भावना बनाया तो यह है कि क्या मैं अपने Vagrantfile में कोशिश कर रहा हूँ है:

config.vm.provision :chef_solo do |chef| 
    chef.recipe_url = 'https://github.com/opscode/cookbooks/tarball/master' 
    chef.add_recipe 'nginx' 
    chef.add_recipe 'mysql' 
    chef.add_role 'web' 

    # You may also specify custom JSON attributes: 
    # chef.json = { :mysql_password => '' } 
end 

मैं डॉन ' टी सोचते हैं कि कोई सवाल है कि मैं बस कुछ गलत समझ रहा हूं, लेकिन मुझे एक प्रलेखन स्रोत नहीं मिला है जो ऐसा लगता है कि यह इस वाग्रेंट संदर्भ को फिट करता है।

धन्यवाद।

+0

मामले में किसी को भी इस हाल ही में की कोशिश की है, Git रेपो संदेश के लिए बदल दिया तो गुरु opscode cookbooks शाखा अब काम नहीं करता डाउनलोड करने की इस पद्धति व्यक्ति रेपोस डाउनलोड करने के लिए किया है। –

उत्तर

20

जिस तरह से आप ऊपर दिखाते हैं वह निश्चित रूप से ठीक काम करेगा।

हालांकि, यदि आप शेफ एकल का उपयोग करने जा रहे हैं, तो मैं केवल कंटबुक नियंत्रण में जाने वाले भंडार के भीतर कुकबुक को एम्बेड करने की अनुशंसा करता हूं। इससे ऐसा होता है कि जब आप प्रतिबद्ध होते हैं तो हर समय, Vagrantfile को कुकबुक के उचित संस्करणों के साथ गठबंधन किया जाता है। तो 2 साल में जब आप आज से कोड की जांच करते हैं, तो कुकबुक को तकनीकी रूप से काम करना चाहिए।

यदि आप इस मार्ग पर जाना चाहते हैं, तो cookbooks जैसी निर्देशिका बनाएं, जिसमें कुकबुक शामिल हैं। फिर तो जैसे Vagrant कॉन्फ़िगर करें:

config.vm.provision :chef_solo do |chef| 
    chef.cookbooks_path = "cookbooks" 
    chef.add_recipe 'nginx' 
    chef.add_recipe 'mysql' 
    chef.add_role 'web' 

    # You may also specify custom JSON attributes: 
    # chef.json = { :mysql_password => '' } 
end 
16

दुर्भाग्य से, वहाँ बावर्ची के साथ संयोजन में Vagrant पर दस्तावेज़ीकरण का एक बहुत नहीं है। मैं आपके लिए अपनी कुकबुक प्रबंधित करने के लिए librarian का उपयोग करने की अनुशंसा करता हूं। मैं आम तौर पर मेरी Vagrantfile में एक ब्लॉक इस के समान है:

config.vm.provision :chef_solo do |chef| 
    chef.cookbooks_path = "chef/cookbooks" 
    chef.roles_path  = "chef/roles" 

    # ... 
end 

मैं chef बुलाया अपने प्रोजेक्ट की जड़ में एक नया निर्देशिका बनाने और मेरे .gitignore निम्न पंक्तियां जोड़ें:

# Ignore librarian bundled cookbooks and cache 
/chef/cookbooks 
/chef/tmp 

में chef निर्देशिका, आप librarian-chef init चलाने के लिए और एक तरह से आप एक Gemfile के साथ होता है में बनाया Cheffile लिए पाक कला पुस्तकें जोड़ना शुरू कर सकते:

cookbook "apt", 
    :git => "git://github.com/fnichol/chef-apt.git", 
    :ref => "cacher-client-solo-support" 

cookbook "imagemagick", "0.2.2" 

cookbook "mongodb", 
    :git => "git://github.com/edelight/chef-cookbooks.git", 
    :ref => "0.11.0" 

आपको गिट रिपॉजिटरीज, फ़ाइल पथ और संस्करणों को बंडल निर्दिष्ट करने में सक्षम होने का लाभ मिलता है जो आप कई स्रोतों से कुकबुक का उपयोग करते समय बेहद सहायक होते हैं। जब आप librarian-chef install लाइब्रेरियन चलाते हैं तो सभी निर्दिष्ट कुकबुक लाएंगे और उन्हें अपने चेफाइल के स्थान के सापेक्ष cookbooks निर्देशिका में संग्रहीत करेंगे।

+0

लाइब्रेरियन-शेफ के लिए एक और विकल्प Berkshelf है। berkshelf.com। Berkshelf का मामूली लाभ कुकबुक विकसित करने और उन्हें प्रबंधित करने के लिए इसका उपयोग करने के लिए समर्थन है। यह लाइब्रेरियन-शेफ के लिए एक अनुशंसित/समर्थित उपयोग केस प्रतीत नहीं होता है। – Mikezx6r

+0

यह सेटअप पूरी तरह से काम करता है, धन्यवाद! – Vamsi

0

आप अपने लिए अपनी कुकबुक प्रबंधित करने के लिए बर्कहेल्फ़ का भी उपयोग कर सकते हैं। Berkshelf वास्तव में प्रबंधन cookbooks आसान बनाता है।

आपको बस इतना करना है कि बेर्क्सहेल्फ़ मणि इंस्टॉल करें, और बेर्कफाइल खाली बनाने के लिए बर्क इनिट चलाएं।

निर्भरताओं को हल करने के लिए बर्कफाइल में कुकबुक जोड़ने के कुछ अलग-अलग तरीके हैं।

उदाहरण:

सुपरमार्केट उपयोग से पाक कला पुस्तकें हल करने के लिए:

cookbook "mycookbook", git: "https://github.com/cookbooks/mycookbook.git" 

आप भी अपने स्थानीय निर्देशिका में पाक कला पुस्तकें रखने के लिए और का उपयोग कर उन्हें हल कर सकते हैं:

source 'http://chefsupermarket.com' 

cookbook 'mycookbook', '~> 1.3.6' 

Git उपयोग से हल करने के लिए berksfile का उपयोग कर:

cookbook 'mycookbook', path: '/path_to_my/chef/cookbook' 
0

मैं अपनी सभी रसोई पुस्तकों के साथ एक बड़ा मोनोलिटिक भंडार पसंद करता हूं। तो मैं पुस्तकालय या Berkshelf, बस Vagrant और महाराज का उपयोग नहीं करते हैं। मैं वर्चुअलबॉक्स का उपयोग करके वीएम बनाने के लिए शेफ का उपयोग करता हूं लेकिन डॉकर कंटेनर को "सेंकना" भी करता हूं।

मुझे इस दृष्टिकोण के साथ कोई पोर्टेबिलिटी समस्या नहीं दिखाई देती है। स्थानीय विकास के लिए मेरे सभी शेफ सामान एक स्थान पर हैं ~/chef। मेरे पास एक फ़ोल्डर ~/chef/vagrant है जिसमें मेरी सभी Vagrant फ़ाइलें हैं।

मेरा Vagrantfile एस हमेशा निम्न के जैसा कुछ होगा।

config.vm.provision 'chef_zero' do |chef| 
    chef.environment = 'some_environment' 
    chef.cookbooks_path = '~/chef/cookbooks' 
    chef.roles_path = '~/chef/roles' 
    chef.data_bags_path = '~/chef/data_bags' 
    chef.encrypted_data_bag_secret_key_path = '~/chef/chef_key' 
    chef.environments_path = '.' 
    chef.nodes_path = '~/chef/nodes' 
    chef.add_recipe 'motd' 
    chef.add_recipe '..' 
    chef.version = '12.14.89' 
    # chef.log_level = 'debug' 
    end