Jinja2 टेम्पलेट में Ansible परिवर्तनीय सरणी पर लूप


12

जब मेजबान के बारे में अन्सिबल तथ्य इकट्ठा करता है, तो यह मेजबान के सभी आरोह को प्राप्त करता है:

 "ansible_mounts": [
            {
                "block_available": 7800291, 
                "block_size": 4096, 
                "block_total": 8225358, 
                "block_used": 425067, 
                "device": "/dev/mapper/foobar", 
                "fstype": "xfs", 
                "inode_available": 16403366, 
                "inode_total": 16458752, 
                "inode_used": 55386, 
                "mount": "/", 
                "options": "rw,seclabel,relatime,attr2,inode64,noquota", 
                "size_available": 31949991936, 
                "size_total": 33691066368, 
                "uuid": "2ebc82cb-5bc2-4db9-9914-33d65ba350b8"
            }, 
            {
                "block_available": 44648, 
                "block_size": 4096, 
                "block_total": 127145, 
                "block_used": 82497, 
                "device": "/dev/sda1", 
                "fstype": "xfs", 
                "inode_available": 255595, 
                "inode_total": 256000, 
                "inode_used": 405, 
                "mount": "/boot", 
                "options": "rw,seclabel,relatime,attr2,inode64,noquota", 
                "size_available": 182878208, 
                "size_total": 520785920, 
                "uuid": "c5f7eaf2-5b70-4f74-8189-a63bb4bee5f8"
            }, 

और इसी तरह। इसलिए मैं जो करना चाहता हूं वह है: एक टेम्पलेट में मैं सरणी में सभी ऑब्जेक्ट्स पर लूप करना चाहता हूं और प्रत्येक "माउंट" कुंजी के मूल्यों को आउटपुट करता हूं।

मैं इसे इस तरह आज़माता हूँ:

    (% for mounts in {{ ansible_mounts }} %)
    Mountpoint: {{ ansible_mounts.mount }}
    (% endfor %)

लेकिन यह काम नहीं करता है। मैंने पुनरावृत्तियों () जैसे कुछ अन्य सामानों के साथ प्रयास किया, लेकिन मुझे यह काम करने के लिए नहीं मिला। जहाँ तक मुझे पता है कि अंसिबल का आउटपुट जस में है, अगर वह किसी की मदद करता है। क्या किसी को इसका समाधान पता है या स्टैकओवरफ्लो के लिए यह एक सवाल है?

किसी भी उत्तर के लिए धन्यवाद।

जवाबों:


17

आपके पास एक सरल वाक्यविन्यास त्रुटि है; आपको कोष्ठक के बजाय ब्रेस ब्रैकेट का उपयोग करना चाहिए।

इस समय आपके पास:

(% for mounts in {{ ansible_mounts }} %)
Mountpoint: {{ ansible_mounts.mount }}
(% endfor %)

इन ब्रेसिज़, नहीं कोष्ठक, यह है कि हो सकता है, {%और %}

इसके अलावा, चर नाम आप में से चयन किया forहै mounts, ताकि क्या आप वास्तव में पाश के अंदर का उपयोग कर प्रत्येक वस्तु प्राप्त करने के लिए होना चाहिए।

अंत में, लूप के लिए चर के आसपास ब्रेसिज़ आवश्यक नहीं हैं।

इन त्रुटियों को ठीक करने के परिणामस्वरूप, यह ठीक काम करना चाहिए:

{% for mounts in ansible_mounts %}
Mountpoint: {{ mounts.mount }}
{% endfor %}

लानत है ब्रेसेस के साथ टिप्पणी पर पढ़ें ... यदि आप गलती से पहले गलत ब्लॉक की नकल करते हैं, तो स्पॉट करना मुश्किल है। :(
मार्कस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.