2016-02-15 25 views
5

Mam plik json w tym samym katalogu, w którym znajduje się mój skrypt ansibli. Poniżej znajduje się zawartość pliku json:jak odczytać plik json za pomocą ansible

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

Próbuję pobrać te pakiety za pomocą get_url. Poniżej znajduje się podejście:

--- 
- 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 

Pierwszym zadaniem jest drukowanie zawartości pliku poprawnie, ale w drugim zadaniu, otrzymuję następujący błąd:

[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

Działa u mnie w wersji 2.0.0.2. Jakiej używanej wersji ansibli? – graphite

+0

wersja 2.1.0 – Shasha99

+0

Wygląda na to, że jest jakiś problem w pliku json. Dla kilku plików działa, a dla kilku nie. – Shasha99

Odpowiedz

10

Musisz dodać from_json jinja2 filtr po wyszukiwaniu:

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