2016-02-15 13 views
5

का उपयोग कर जेसन फ़ाइल को कैसे पढ़ा जाए मेरे पास एक ही निर्देशिका में एक जेएसएस फ़ाइल है जहां मेरी उत्तरदायी स्क्रिप्ट है। जेसन फ़ाइल की सामग्री निम्नलिखित है:उत्तरदायी

{ "resources":[ 
      {"name":"package1", "downloadURL":"path-to-file1" }, 
      {"name":"package2", "downloadURL": "path-to-file2"} 
    ] 
} 

मैं get_url का उपयोग करके इन पैकेजों को डाउनलोड करने का प्रयास कर रहा हूं। निम्नलिखित दृष्टिकोण है:

--- 
- hosts: localhost 
    vars: 
    package_dir: "/var/opt/" 
    version_file: "{{lookup('file','/home/shasha/devOps/tests/packageFile.json')}}" 

    tasks: 
    - name: Printing the file. 
     debug: msg="{{version_file}}" 

    - name: Downloading the packages. 
     get_url: url="{{item.downloadURL}}" dest="{{package_dir}}" mode=0777 
     with_items: version_file.resources 

पहला काम है सही ढंग से फ़ाइल की सामग्री मुद्रण लेकिन दूसरे कार्य में, मैं निम्नलिखित त्रुटि हो रही है:

[DEPRECATION WARNING]: Skipping task due to undefined attribute, in the future this 
will be a fatal error.. This feature will be removed in a future release. Deprecation 
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 
+0

यह 2.0.0.2 में मेरे लिए काम करता है। आप किस उत्तरदायी संस्करण का उपयोग करते हैं? – graphite

+0

संस्करण 2.1.0 – Shasha99

+0

लगता है जैसे जेसन फ़ाइल में कुछ समस्या है। कुछ फाइलों के लिए यह काम कर रहा है और कुछ इसके लिए नहीं। – Shasha99

उत्तर

10

आप एक from_json jinja2 जोड़ने के लिए लुकअप के बाद फ़िल्टर करें:

version_file: "{{ lookup('file','/home/shasha/devOps/tests/packageFile.json') | from_json }}"