我正在使用ansible.builtin.slurp来完成这个任务。以下是我不可接受的角色的相关部分:
- name: Load config
slurp:
src: "/etc/mlnx_snap/mlnx_snap.json"
register: imported_config
- name: Debug
debug:
var: imported_config我希望调试打印我的文件,但是,发生了一些不同的事情。以下是文件内容:
root@ratchet01-snic:~# cat /etc/mlnx_snap/mlnx_snap.json
{
"ctrl": {
"sqes": 0x6,
"cqes": 0x4,
"cq_period": 3,
"cq_max_count": 6,
"nr_io_queues": 32,
"mn": "Mellanox BlueField NVMe SNAP Controller",
"sn": "MNC12",
"mdts": 4,
"oncs": 0,
"offload": false,
"max_namespaces": 0,
"quirks": 0x0
},
"backends": [ {
"type": "spdk_bdev",
"paths": [{}]
} ]
}以下是调试输出的样子:
Debug...
retchet01-snic.mtr.labs.mlnx ok: {
"changed": false,
"imported_config": {
"changed": false,
"content": "LyoKICogcHJ...CiAgICB9IF0KfQo=",
"encoding": "base64",
"failed": false,
"source": "/etc/mlnx_snap/mlnx_snap.json"
}
}内容实际上是几千个字符长,我只是缩短了它的可读性。
想象一下,在这个角色中,我还有以下任务:
- name: Do x
module_name:
var_name: value
when: imported_config.ctrl.quirks >= 0如何正确导入JSON文件,以便这样的任务能够工作?我做错了什么?
发布于 2021-04-23 23:10:28
以下内容帮助获取了JSON文件的原始文本:
- name: Debug
debug:
var: imported_config.content|b64decode要将其进一步解码为变量,我需要使用以下方法:
- name: Debug
debug:
var: imported_config.content|b64decode|from_json但是,由于无效的JSON格式,这对我来说是失败的(它包含一些奇怪的注释,尽管JSON中不允许这些注释)。但这不属于这个问题的最初范围。
发布于 2021-04-24 03:07:22
使用from_yaml。JSON是YAML的一个子集。例如
- set_fact:
content: "{{ imported_config.content|b64decode|from_yaml }}"
- debug:
msg: "{{ content.ctrl.quirks >= 0 }}"给出
msg: truehttps://stackoverflow.com/questions/67237737
复制相似问题