वहाँ दूर से शेफ-क्लाइंट चलाने के लिए एक और अधिक सुंदर तरीका है?


22

यह बावर्ची फास्ट स्टार्ट ट्यूटोरियल में अनुशंसित तरीका है:

knife ssh name:mynode -a ipaddress  -x ubuntu -i mycredentials.pem "sudo chef-client"

यह वास्तव में अनाड़ी है। क्या वास्तव में एक बेहतर तरीका नहीं है, या यह विचार है कि वास्तविक उत्पादन वातावरण में, आपके पास वैसे भी ऑटो-अपडेटिंग नोड्स होंगे?


1
किस तरह से आपको लगता है कि यह "अनाड़ी" है?
Womble

9
खैर, इसे इस तरह से रखो। यह अनाड़ी नहीं होगा: "चाकू अद्यतन नाम: mynode"। क्लाइंट से कनेक्ट करने के लिए दोनों को स्पेल करना, और शेफ क्लाइंट कमांड का नाम (प्लस तथ्य यह है कि इसे सूडो अनुमतियों के साथ चलाने की आवश्यकता है) अनाड़ी है। चाकू अन्य गंदगी के बहुत सारे को दूर करने में अच्छा करता है - ऐसा क्यों नहीं?
स्टीव बेनेट

जवाबों:


11

यह बहुत ज्यादा है कि आप चीजों को कैसे प्राप्त करना शुरू करते हैं, लेकिन यह केवल एक बार किया जाना चाहिए। शेफ-क्लाइंट का शुरुआती रन आम तौर पर एक init.d सेवा के रूप में शेफ-क्लाइंट डेमॉन को सक्षम और शुरू करता है।

यदि आप वास्तव में इसे और अधिक सुरुचिपूर्ण ढंग से करना चाहते हैं, तो आप चाकू-ssh और सीधे ssh चला सकते हैं:

ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client

यह संभवत: तेजी से होगा, क्योंकि चाकू-ssh खोज शब्द (इस मामले में name:dynode) से मेल खाते नोड्स लाने के लिए शेफ सर्वर के खिलाफ एक खोज करता है , जिसे आपको आईपी पते के पहले से पता होने पर कड़ाई से करने की आवश्यकता नहीं है।


2
ठीक है, मुझे लगता है कि सवाल का जवाब - नहीं, कोई बेहतर तरीका नहीं है। अफ़सोस कि "चाकू बूटस्ट्रैप" वास्तव में शेफ-क्लाइंट भी नहीं चला सकता है।
स्टीव बेनेट

मैं आमतौर पर उस विशेष समस्या को हल करने के लिए अपने बूटस्ट्रैप स्क्रिप्ट के अंत में शेफ-क्लाइंट चलाता हूं। हालाँकि यदि आप चाकू-एसएच को नापसंद करते हैं तो आप शायद सोचते होंगे कि चाकू-बूटस्ट्रैप इंटर्नल समान रूप से अनजाने हैं। गितुब पर एक उदाहरण लिपि है।
टिम पॉटर

1
ec2 server createचाकू प्लगइन सिर्फ रन SSH + महाराज ग्राहक द्वारा पीछा बूटस्ट्रैप। इसलिए यदि यह आपको कोई बेहतर महसूस कराता है, तो शेफ लेखकों ने कुछ विशेष रूप से अधिक समझदार नहीं किया है।
किगिलपिन

अगर शेफ-क्लाइंट आपको चलाने के लिए कुछ समय लेता है तो आपको टाइमआउट मिलता है। :( ssh: होस्ट xx.xx.xx.xx पोर्ट 22 से कनेक्ट करें: कनेक्शन समय समाप्त हो गया
gdanko

इस मामले में जहां शेफ-क्लाइंट बूटस्ट्रैप के बाद डेमॉन के रूप में चलाया जाता है, और अंतराल सेट की परवाह किए बिना, IT IT IS: ssh ubuntu @ ipadddress -i mycadentials.pem -f -n "sudo killall -USR1 शेफ को पूरा करने के लिए सबसे महत्वपूर्ण तरीका है। -client "। फोर्क एसएचएस को समवर्ती रूप से नोड्स की सूची में करना है।
एंड्रयू एस

12

आप सभी बॉक्सों पर शेफ-क्लाइंट चलाने के लिए चाकू ssh का उपयोग कर सकते हैं जिसमें एक निश्चित भूमिका या नुस्खा होता है:

knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo 

या यदि आप EC2 में हैं:

knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname 

2

आप शेफ-क्लाइंट को तैनात करने और चलाने के लिए ansible का उपयोग कर सकते हैं।

$ ansible -i hosts all -a 'chef-client'

पाइप के साथ आसानी से स्थापित किया गया है:

pip install ansible

आपकी इन्वेंट्री फ़ाइल (उदाहरण में, "होस्ट" नाम) इस तरह दिख सकती है:

[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root

(सूचना "सभी" हमारे उदाहरण के लिए कॉन्फ़िगरेशन फ़ाइल में समूहीकरण का नाम है - यह मनमाना है और कुछ भी हो सकता है। आपकी इन्वेंट्री फ़ाइल में अन्य समूह भी शामिल हो सकते हैं, जैसे [web_wervers], [database_servers], [chef_servers] , आदि।)

तो, फिर से, यह सब एक साथ:

> ansible -i hosts all -a 'chef-client'

या हो सकता है:

> ansible -i hosts all -a 'systemctl status'


1
मैं देख रहा हूँ कि आप यहाँ क्या कर रहे हैं ...?)
विशिष्ट

0

मैं रन का प्रबंधन करने के लिए जेनकिंस सीआई का उपयोग करता हूं। लिनक्स सर्वर को एक कार्य केंद्र के रूप में स्थापित किया गया है और इसमें जेनकिंस स्थापित है। इसलिए मैं संशोधित run_list के साथ नोड्स को बूटस्ट्रैप कर सकता हूं। बूटस्ट्रैपिंग प्रक्रिया, वैसे भी, अंत में शेफ-क्लाइंट चलती है।

एडहॉक निष्पादन के लिए, जेनकिंस नौकरी एक नोड के लिए run_list को संशोधित करने और वांछित नोड पर शेफ-क्लाइंट को निष्पादित करने के लिए SSH प्लगइन का उपयोग करने के लिए चाकू कमांड निष्पादित करती है।


0

यह एक अफ़सोस की बात है कि क्लाइंट को शेफ को रेखांकित करने के लिए हमें एक कमांड भेजना होगा।

ऐसा लगता है कि यद्यपि हर शेफ क्लाइंट ने शेफ सर्वर के साथ एक सुरक्षित कनेक्शन स्थापित किया है, लेकिन शेफ सर्वर उस सुरक्षित कनेक्शन पर कमांड मल्टीप्लेयर प्रदान नहीं करता है, क्यों?


0

chef-runशेफ वर्कस्टेशन में एक नई कमांड है:

chef-run server_name resource_name

यह स्थापित करेगा chef-clientयदि मौजूद नहीं है और आपके द्वारा निर्दिष्ट संसाधन या कुकबुक को चलाएगा।

ट्यूटोरियल: https://learn.chef.io/modules/try-chef-infra#/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.