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.
Vous devez ajouter un from_json
filtre jinja2 après la recherche:
version_file: "{{ lookup('file','/home/shasha/devOps/tests/packageFile.json') | from_json }}"
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