当我运行Ansible播放时,以下输出到shell:
TASK [java : debug] ************************************************************************************************************************************************************
ok: [10.3.16.114] => {
"msg": {
"changed": false,
"examined": 1,
"failed": false,
"files": [
{
"attributes": "Directory, NotContentIndexed",
"creationtime": 1551375173.18858,
"filename": "jre1.8.0_201",
"isarchive": false,
"isdir": true,
"ishidden": false,
"islnk": false,
"isreadonly": false,
"isshared": false,
"lastaccesstime": 1551375199.2058175,
"lastwritetime": 1551375199.2058175,
"owner": "NT AUTHORITY\\SYSTEM",
"path": "C:\\Program Files\\Java\\jre1.8.0_201",
"size": 205713652
}
],
"matched": 1
}
}
我只需要path
的值,以便可以将其用作在Windows内部设置动态java_home的变量。
我一直试图在yaml中使用json_query
,但是这里存在知识限制。
- name: Obtain information about a folder
win_find:
paths: C:\Program Files\Java
recurse: no
file_type: directory
register: java_folder
- set_fact:
java_home_dir: "{{java_folder.file | json_query()}}"
答案 0 :(得分:0)
这是一条简单的道路。需要对第一个元素进行寻址,因为“ 文件”是一个列表。
- set_fact:
java_home_dir: "{{ java_folder.files[0].path }}"
如果列表中还有更多文件,则需要json_query。