2013-11-24 9 views
9

चलाने के लिए उत्तरदायी प्लेबुक मैंने हाल ही में अपने सर्वरों में से एक के लिए Ansible में डाला, और इसे वास्तव में दिलचस्प और समय बचाने में पाया। मैं एक उबंटू समर्पित सर्वर चला रहा हूं और पाइथन पर लिखे गए कुछ वेब अनुप्रयोगों को कॉन्फ़िगर किया है और कुछ PHP पर हैं। पायथन के लिए मैं uwsgi को HTTP गेटवे के रूप में उपयोग कर रहा हूं। मैंने एक विशिष्ट वेब एप्लिकेशन के उदाहरण को चलाने के लिए कुछ प्रक्रियाओं को शुरू/पुनरारंभ करने के लिए खोल स्क्रिप्ट लिखी हैं। मुझे हर बार क्या करना है, एसएसएच कनेक्ट करें और उस विशिष्ट एप्लिकेशन पर नेविगेट करें और स्क्रिप्ट चलाएं।शैल कमांड

मैं क्या जरूरत

मैं एक तरह से आदेश की एक पंक्ति के साथ मेरी निजी कंप्यूटर से सभी कि ऐसा करने के लिए Ansible प्लेबुक लिखने के लिए खोजने की कोशिश कर रहा है, लेकिन मैं कोई सुराग नहीं कैसे कि क्या करना है। मुझे एक बहुत ही व्याख्यात्मक (शुरुआत के लिए) दस्तावेज या इंटरनेट पर मदद नहीं मिली है।

प्रश्न

मैं कैसे Ansible प्लेबुक के साथ Nginx को पुनः आरंभ कर सकते हैं? मैं प्रक्रिया आईडी द्वारा प्रक्रिया को कैसे मार सकता हूं?

उत्तर

12

तुम भी एक प्लेबुक की जरूरत नहीं यह करने के लिए करते हैं:

  • पुन: प्रारंभ हो nginx:

ansible your_host -m service -a 'name=nginx state=restarted'

(service module देखें)

  • द्वारा एक प्रक्रिया को मार प्रक्रिया आईडी

ansible your_host -m command -a 'kill -TERM your_pid'

(संकेत समायोजित, और प्रयोग pkill/killall यदि आप एक नाम से मिलान करने की जरूरत है; command module देखें)

हालांकि, मैं यह नहीं कहूंगा कि उत्तरदायी चमकता है यदि आप इसे केवल विज्ञापन-आदेशों के लिए उपयोग कर रहे हैं।

यदि आपको प्लेबुक के साथ शुरू करने के लिए एक ट्यूटोरियल की आवश्यकता है, तो एक over here है।

अब

अगर आप इन डाल करने के लिए कर सकते हैं एक प्लेबुक (के फोन यह playbook.yml हैं) में (सेवा, आदेश, आदि के लिए आधिकारिक नाम .. modules कर रहे हैं), तो आप सिर्फ कर सकते हैं:

- hosts: webappserver 
    tasks: 
    - name: Stops whatever 
     command: kill -TERM your_pid 
     notify: 
     - Restart nginx 

    - name: Another task 
     command: echo "Do whatever you want to" 

    handlers: 
    - name: Restart nginx 
     service: name=nginx state=restarted 

बनाएं एक सूची फ़ाइल (hosts) युक्त:

# webappserver should resolve ! 
webappserver 

आह्वान के साथ:

ansible playbook.yml -i hosts 

और यह काम करना चाहिए।

यह सब बहुत ही बुनियादी है और इसे आसानी से दस्तावेज़ या किसी भी ट्यूटोरियल को पढ़ने में आसानी से पढ़ा जा सकता है।

+0

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

+0

हां। मेरे द्वारा वर्णित आदेशों को प्लेबुक में रखा जा सकता है। संपादित उत्तर देखें। मदद के लिए – leucos

+0

Thx, कुछ घंटों में आप पर वापस आ जाएगा –

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