如何使用ansible读取json文件
how to read json file using ansible
我的 ansible 脚本所在的目录中有一个 json 文件。以下是 json 文件的内容:
{ "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.
您必须在查找后添加一个 from_json
jinja2 过滤器:
version_file: "{{ lookup('file','/home/shasha/devOps/tests/packageFile.json') | from_json }}"
如果您需要读取 JSON
格式的文本并将其存储为变量,也可以通过 include_vars
处理。
- hosts: localhost
tasks:
- include_vars:
file: variable-file.json
name: variable
- debug: var=variable
对于未来的访问者,如果您正在寻找远程 json 文件阅读。这行不通
因为 ansible 查找是在本地执行的
你应该使用像 Slurp
这样的模块
我的 ansible 脚本所在的目录中有一个 json 文件。以下是 json 文件的内容:
{ "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.
您必须在查找后添加一个 from_json
jinja2 过滤器:
version_file: "{{ lookup('file','/home/shasha/devOps/tests/packageFile.json') | from_json }}"
如果您需要读取 JSON
格式的文本并将其存储为变量,也可以通过 include_vars
处理。
- hosts: localhost
tasks:
- include_vars:
file: variable-file.json
name: variable
- debug: var=variable
对于未来的访问者,如果您正在寻找远程 json 文件阅读。这行不通 因为 ansible 查找是在本地执行的
你应该使用像 Slurp
这样的模块