web-dev-qa-db-fra.com

comment lire un fichier json en utilisant ansible

J'ai un fichier json dans le même répertoire où se trouve mon script ansible. Voici le contenu du fichier json:

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

J'essaie de télécharger ces packages à l'aide de get_url. Voici l'approche:

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

La première tâche imprime correctement le contenu du fichier mais dans la deuxième tâche, j'obtiens l'erreur suivante:

[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.
16
Shasha99

Vous devez ajouter un from_json filtre jinja2 après la recherche:

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

Si vous avez besoin de lire un texte au format JSON et de le stocker en tant que variable, il peut également être géré par include_vars .

- hosts: localhost
  tasks:
    - include_vars:
        file: variable-file.json
        name: variable

    - debug: var=variable
7
Akif