शेल आदेश चलाने के लिए उत्तरदायी प्लेबुक

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

क्या चाहिए मुझे

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

सवाल

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

0
जोड़ा संपादित
विचारों: 1

1 उत्तर

ऐसा करने के लिए आपको एक प्लेबुक की भी आवश्यकता नहीं है:

  • nginx को पुनरारंभ करना:

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

( सेवा मॉड्यूल देखें)

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

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

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

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

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

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

- 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

एक इन्वेंट्री फ़ाइल बनाएं ( होस्ट ) जिसमें निम्न शामिल हैं:

# webappserver should resolve !
webappserver

इसके साथ इनकार करें:

ansible playbook.yml -i hosts

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

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

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