2014-11-18 10 views
11

मैं उत्तरदायी टेम्पलेट्स में इन्वेंट्री वार खींचने वाले पैटर्न के साथ संघर्ष कर रहा हूं, कृपया मदद करें। :)टेम्पलेट में समूह वर्र्स के माध्यम से उत्तरदायी पाश

मैं एक निगरानी सर्वर स्थापित कर रहा हूं, और मैं उत्तरदायी का उपयोग कर सर्वरों को स्वचालित रूप से प्रावधान करने में सक्षम होना चाहता हूं। मैं टेम्पलेट में लूप के साथ संघर्ष कर रहा हूं ताकि मुझे यह अनुमति मिल सके।

monitoringserver.yml

vars: 
     servers_to_monitor: 
     - {cname: web1, ip_address: 192.168.33.111} 
     - {cname: web2, ip_address: 192.168.33.112} 
     - {cname: db1, ip_address: 192.168.33.211} 
     - {cname: db2, ip_address: 192.168.33.212} 

template.yml

all_hosts += [ 
      {% for host in servers_to_monitor %} 
        "{{ host.cname }}{{ host.ip }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
      {% endfor %} 
] 

लेकिन इस isn:

मेरे अर्द्ध काम कर soluition अब तक प्लेबुक कि टेम्पलेट कार्य मेरे पास कॉल में है आदर्श नहीं है क्योंकि मैं निगरानी के लिए विभिन्न सर्वरों के लिए अलग-अलग आईपी पते को परिभाषित नहीं कर सकता। अन्य लोगों ने यह कैसे किया है? मुझे यकीन है कि यह छोटा होना चाहिए लेकिन मेरे दिमाग वाक्यविन्यास के साथ संघर्ष कर रहा है।

धन्यवाद

एलन

संपादित करें:

all_hosts += [ 
         "web1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "web2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "db1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "db2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
] 

क्या मैं चाहूँगा मूल्यों web1/web2/DB1/डीबी 2 अलग होने की है: जिसके परिणामस्वरूप टेम्पलेट स्पष्ट करने के लिए कुछ इस तरह दिखता इस पर निर्भर करता है कि मैं एक उत्पादन सूची फ़ाइल या एक विकास सूची फ़ाइल का उपयोग कर रहा हूं।

+1

आप जोड़ सकते आप क्या चाहते हैं वास्तविक परिणाम होने के लिए? –

+0

धन्यवाद रामन ने स्पष्ट करने के लिए एक संपादन जोड़ा :) –

+0

मैंने दो समूह_वार डीआईआर मॉनीटर-डीवी और मॉनीटर-पब बनाकर अब इसके आसपास काम करने में कामयाब रहा है, फिर खेल पुस्तकें सभी भूमिकाओं का उपयोग करती हैं, और सूची फ़ाइल उत्पादन विशिष्ट समूह युद्धों को बुला रहा है। हालांकि सही नहीं लगता है :) –

उत्तर

18

आदर्श रूप से आप उत्पादन और स्टेजिंग के लिए विभिन्न इन्वेंट्री फाइलों का उपयोग करेंगे, जो आपको {{ inventory_hostname }} मान रखने की अनुमति देगा, लेकिन विभिन्न मशीनों को लक्षित करें।

भी कर सकते हैं अलग-अलग समूहों के माध्यम से लूप ...

मेजबान:

[web] 
web1 
web2 

[db] 
db1 
db2 

प्लेबुक:

- name: play that sets a group to loop over 
    vars: 
    servers_to_monitor: "{{ groups['db'] }}" 

    tasks: 
    - template: 
     src: set-vars.j2 
     dest: set-vars.js 

टेम्पलेट:

all_hosts += [ 
{% for host in servers_to_monitor %} 
    "{{ hostvars[host].inventory_hostname }}{{ hostvars[host].ansible_default_ipv4.address }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
{% endfor %} 
] 
संबंधित मुद्दे