2014-10-16 7 views
16

मैं उत्तरदायी का उपयोग कर रहा हूं और मैं केवल एक बार कार्य करना चाहता हूं। मैं और run a task only onceउत्तर कार्य पर run_once कॉन्फ़िगरेशन को अनदेखा करें

- name: apt update 
    shell: apt-get update 
    run_once: true 

कैसे कॉन्फ़िगर करने के लिए के बारे में दस्तावेज़ का पालन करें लेकिन जब मैं Ansible चलाने के लिए, यह हमेशा इस कार्य को चलाता है। मैं केवल एक बार अपना काम कैसे चला सकता हूं।

उत्तर

27

रन_ऑन्स विकल्प हर बार आपकी प्लेबुक/कार्य चलता है, लेकिन विशिष्ट रन के दौरान ही इसे चलाएगा। तो हर बार जब आप नाटक चलाते हैं, तो यह दौड़ जाएगा, लेकिन केवल सूची में पहले होस्ट पर होगा। यदि आप एक बार उस आदेश को केवल एक बार चलाने के लिए एक रास्ता ढूंढ रहे हैं, तो आपको तर्क उत्पन्न करने की आवश्यकता होगी। अपने उदाहरण का उपयोग करना, यह निम्नलिखित का उपयोग करके प्राप्त किया जा सकता है -

- name: apt update 
    shell: apt-get update && touch /root/.aptupdated 
    args: 
    creates: /root/.aptupdated 

इस मामले में फ़ाइल /root/.aptupdated बनाई गई है। कार्य अब यह देखने के लिए जांच करेगा कि क्या यह मौजूद है, और यदि ऐसा होता है तो यह नहीं चलेगा।

संबंधित नोट पर यदि आप जिस कार्य को चलाने का प्रयास कर रहे हैं वह उपयुक्त है, तो आप मूल एपीटी मॉड्यूल का उपयोग करना चाह सकते हैं। इसके बाद आप ऐसा कुछ कर सकते हैं -

- name: apt update 
    apt: update_cache=yes cache_valid_time=86400 

अब यह केवल तभी चलाएगा जब कैश एक दिन से बड़ा हो।

+1

हाँ- यदि यह 'apt' के लिए है, तो उपयुक्त मॉड्यूल का उपयोग करें। 'खोल' और 'कमांड' बहुत अच्छे हैं लेकिन उनके उपयोग में बहुत सीमित होना चाहिए। – tedder42

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