2013-02-26 17 views
17

बावर्ची में package "nginx" एक उबंटू नोड पर apt-get install nginx में अनुवाद किया जाता है में उन्नयन, क्या एक बावर्ची नुस्खा है कि में अनुवाद होगा में लिखा जा सकता है:apt-get अद्यतन और apt-get बावर्ची

apt-get -y update 
apt-get -y upgrade 

नहीं किया जा सका apt cookbook से पता लगाएं।

+0

क्या यह https://github.com/patdeegan/chef-unattended-upgrades मदद करेगा? – favoretti

+0

मुझे ऐसा लगता है, लेकिन मुझे कोई दिलचस्पी है यदि कोई हल्का समाधान है। –

उत्तर

43

The Opscode "apt" cookbook की डिफ़ॉल्ट नुस्खा apt-get update चलाने के लिए यह सुनिश्चित करने के लिए कि पैकेज कैश अपडेट किया गया है। हम आपको अपने नोड की रन सूची में जल्दी ही डालने की सलाह देते हैं ताकि बाद में पैकेज पर सही संस्करणों के साथ स्थापित किया जा सके।

हम आम तौर पर सलाह देते हैं कि उपयोगकर्ता दो कारणों से नुस्खा में "apt-get upgrade" का उपयोग करें।

  1. apt-get एक पैकेज विरोधी विन्यास या अन्य समस्याओं के आदेश को फिर से चल रहा है, या अन्य उपयुक्त/dpkg आदेशों मैन्युअल चलने के बिना हल नहीं किया जा सकता है कि अपग्रेड कर सकते हैं।
  2. सिस्टम पर सभी संकुलों के स्वचालित उन्नयन के चलते सिस्टम पर अनपेक्षित साइड इफेक्ट्स हो सकते हैं (किनारे के मामले कई और संभावित रूप से कांटेदार होते हैं, इसलिए मैं उन्हें सभी को कवर नहीं कर सकता)।

इसके बजाय, पैकेज के लिए "अपग्रेड" कार्रवाई का उपयोग करें जो हमेशा नवीनतम संस्करण में अपडेट होना चाहिए।

package "nginx" do 
    action :upgrade 
end 

आप एक रसोई की किताब है कि रसोई की किताब को परिभाषित करता है पुन: उपयोग कर रहे हैं, तो आप एक नुस्खा है कि मौजूदा संसाधन की कार्रवाई को संशोधित करता है, इस प्रकार लिख सकते हैं:

resources("package[nginx]").action(:upgrade) 

एक नुस्खा में #resources विधि होगा संसाधन संग्रह में निर्दिष्ट संसाधन (पैकेज nginx) में देखो। फिर विधि :upgrade के साथ विधि भेजकर शेफ को बताएगी कि कार्रवाई को अपग्रेड करना चाहिए।

संपादितअद्यतन: जब संकुल कि इस तरह से स्वचालित रूप से अपग्रेड किया जाएगा चुनने के लिए सावधान रहना है। एक पैकेज में एक अपस्ट्रीम परिवर्तन प्रणाली पर हानिकारक प्रभाव पैदा कर सकता है। यह विशेष रूप से सच है यदि ऐसा पैकेज पोस्ट इंस्टॉलेशन स्क्रिप्ट के दौरान प्रबंधित सेवाओं की पुनरारंभ करता है। अपने बुनियादी ढांचे को जानें, और यदि संदेह में अपना खुद का पैकेज भंडार चलाएं जिसमें आपके पास एप्लिकेशन स्टैक के लिए आवश्यक महत्वपूर्ण पैकेज हैं।

+6

हर कोई यह कहता है, फिर भी जब मैं एपीटी कुकबुक शामिल करता हूं और इसे डिफ़ॉल्ट नुस्खा कहता हूं तो मुझे अद्यतन करने के लिए रिपोजिटरी सूची नहीं मिल सकती है। इससे भी बदतर, यदि मेरी एक में से एक में शामिल एक अन्य नुस्खा उपयुक्त पर निर्भर है, तो नोड में लॉग इन करके मैन्युअल रूप से अद्यतन करने का कोई संभावित तरीका नहीं लगता है। मेरी इच्छा है कि ऐसी परिस्थितियों में अद्यतन करने के लिए एपीटी-रेपॉजिटरी को कैसे प्राप्त किया जाए, जहां आपको एपीटी कुकबुक का उपयोग करने के लिए मजबूर किया गया है, वहां एक निश्चित स्पष्टीकरण था। – wkhatch

+0

ऐसा प्रतीत होता है कि उपयुक्त केवल 24 घंटे अपडेट होगा। यह अस्थायी फ़ाइल प्रक्रिया को नियंत्रित करती है।/Var/lib/उपयुक्त/आवधिक/अद्यतन-सफलता-टिकट – jorfus

0

एप शेफ रेसिपी प्रत्येक शेफ रन के साथ अपडेट नहीं होगा। इसे नियंत्रित करने वाली विशेषता को periodic_update_min_delay कहा जाता है और इसे 86400 पर सेट किया गया है (विशेषता को sec_delay कहा जाना चाहिए)। यदि निम्न फ़ाइल मौजूद है और 24 घंटे से अधिक पुरानी है तो कैश अपडेट करेगा।

/var/lib/apt/periodic/update-success-stamp 

यह भी प्रतीत होता है कि उपयुक्त नुस्खा (default.rb) एक अद्यतन जो अपने नुस्खा कह सकते हैं के लिए मजबूर करने का निर्देश भी शामिल है।

# For other recipes to call to force an update 
execute 'apt-get update' do 

आप कर रहे हैं कि हालांकि, आप एक not_if भी अक्सर, जिसके आधार पर आप इसे भी मैन्युअल रूप से अपने आप को कॉल कर सकते हैं इसे चलाने से बचने के लिए चाहता हूँ। मैं इस के साथ गड़बड़ करने में बीमार हो गया और बस स्थापित करने से पहले एक stanza में apt-get अद्यतन कॉलिंग समाप्त हो गया।

execute "apt-get-update" do 
    command "apt-get update" 
end 

मुझे संदेह है कि सुरक्षा अद्यतनों के लिए दीर्घकालिक समाधान कुछ घंटों में अद्यतन देरी सेट करना है।

संबंधित मुद्दे