2015-06-10 7 views
21

मेरी नौसिखिया सवाल माफ कर दो, लेकिन मैं तीन कार्यों को निष्पादित और एक प्लेबुक में दो भूमिकाएं उपयोग करते हैं, के क्रम में करना चाहते हैं:ansible प्लेबुक इस क्रम में निष्पादित करें: कार्य, भूमिका, कार्य, भूमिका, कार्य

  1. कार्य
  2. भूमिका
  3. कार्य
  4. भूमिका
  5. कार्य

यह मैं क्या मैं अब तक (काम, भूमिका, कार्य) है:

--- 
- name: Task Role Task 
    hosts: 127.0.0.1 
    connection: local 
    gather_facts: false 

    pre_tasks: 
    - name: Do this task first 
    foo: 

    roles: 
    - role: this role second 
    foo: 

    post_tasks: 
    - name: Do this task third 
    foo: 

यह संभव है या मैं भूमिकाओं में अपने कार्यों को बदलने की जानी चाहिए?

उत्तर

13

मैं आपको उत्तर देने के लिए पोस्ट और पूर्व कार्यों के लिए भूमिकाएं बनाने की सलाह देता हूं।

आपका site.yml इस तरह की कुछ होना चाहिए:

--- 
- hosts: localhost 
    remote_user: "{{remote_user}}" 
    sudo: yes 
    gather_facts: false 
    roles: 
    - pre 
    - main_role 
    - post 

भूमिकाओं में फ़ोल्डर आप तीन भूमिकाओं में, पूर्व, पोस्ट और main_role होना आवश्यक है।

+1

यह सही दृष्टिकोण के बाद से यह अद्यतन रोलिंग, अलग मेजबान वर्गों का उपयोग कर के विपरीत के लिए सही ढंग से काम करेगा: तो आप वांछित निष्पादन आदेश मजबूर करने के लिए एक से अधिक ब्लॉक का उपयोग कर सकते हैं। – MattK

19

प्रत्येक "मेजबान:" - ब्लॉक एक-एक करके निष्पादित किया जाएगा।

--- 
- hosts: 127.0.0.1 
    tasks: 
    - name: Do this task first 

- hosts: 127.0.0.1 
    roles: 
    - role: this role second 

- hosts: 127.0.0.1 
    tasks: 
    - name: Do this task third 
+3

इस दृष्टिकोण के साथ एक गॉचा यह है कि यदि आप रोलिंग अपडेट का उपयोग करने का प्रयास करते हैं और अनुक्रमिक रूप से निष्पादित करने के लिए नाटकों के सेट के लिए इरादा रखते हैं। सबकुछ क्रमशः पूरा करने के बजाय, प्रत्येक नाटक मेजबानों के पूरे सेट के लिए पूरा हो जाएगा! – MattK

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