2012-04-25 12 views
7

मेरे पास शेफ द्वारा प्रबंधित एक सर्वर है। मुझे शेफ द्वारा संचालित स्क्रिप्ट से कुकबुक डेटा बैग में रहने वाले कुछ मानों तक पहुंचने की आवश्यकता है।शेफ डेटा बैग से वर्तमान मूल्यों का उपयोग कैसे करें?

/* शेफ आरईएसटी एपीआई शेफ सर्वर द्वारा देखी गई डेटा बैग मानों तक पहुंचने की अनुमति देता है। यह वह नहीं है जिसकी मुझे चाहत है। प्रत्येक chef-client रन डेटा बैग में परिवर्तन सहित कई समन्वित परिवर्तनों को पेश कर सकता है। यदि सर्वर पर डेटा पहले ही बदल चुका है लेकिन chef-client स्थानीय रूप से अभी तक नहीं चला है, तो स्थानीय सेटअप और सर्वर-साइड डेटा बैग सिंक से बाहर हो सकता है।//var/cache/chef/cookbooks/<book-name> तहत डेटा बैग फ़ाइल आयात के बाद से यह कम या ज्यादा सामान्य रूबी है

  • पार्स: */

    मैं दो समाधान देखते हैं।

  • एक नुस्खा के अंदर, डेटा बैग से संबंधित डेटा को मेरी स्क्रिप्ट से सुलभ एक सादे फ़ाइल में डंप करें।

क्या बेहतर विकल्प हैं?

+0

क्या कोई कारण है कि आप शेफ रेसिपी में जो चाहते हैं वह नहीं कर सकते हैं? –

+0

@ जोर्डन: नहीं; यह एक नुस्खा से किया जा सकता है क्योंकि यह एकमात्र आसान विकल्प प्रतीत होता है। यही वही है स्वीकार किए गए उत्तर प्रस्ताव। – 9000

उत्तर

7

नोड हैश या डेटा बैग से अलग फ़ाइल में डेटा डंपिंग शेफ सर्वर और नोड पर चल रही स्क्रिप्ट के बीच संचार करने का एक अच्छा तरीका है। अपनी स्क्रिप्ट JSON पार्स कर सकते हैं, तो यह वास्तव में आसान है:

file "/etc/script.json" do 
    owner "root" 
    group "root" 
    mode 0644 
    content node[:whatever].to_json 
end 

का उपयोग बावर्ची REST इंटरफ़ेस overkill की तरह लगता है, और/var में चारों ओर तलाशने/कैश/महाराज बस अशिष्ट है। (-:

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