ansible、命令模块和带管道的jq
我正在尝试运行docker命令,该命令返回容器列表及其大小 该命令是ansible、命令模块和带管道的jq,ansible,Ansible,我正在尝试运行docker命令,该命令返回容器列表及其大小 该命令是docker容器ls--format“{\'name\”:\“{{{.Names}}\”,\“size\”:“{{.size}}\”--all{jq--slurp 当我尝试在Ansible剧本中运行时,它会爆炸: - name: Get cointainer size raw: /path/to/script/docker-cointainer-size.sh 截断错误为: fatal: [localhost]:
docker容器ls--format“{\'name\”:\“{{{.Names}}\”,\“size\”:“{{.size}}\”--all{jq--slurp
当我尝试在Ansible剧本中运行时,它会爆炸:
- name: Get cointainer size
raw: /path/to/script/docker-cointainer-size.sh
截断错误为:
fatal: [localhost]: FAILED! => changed=true
msg: non-zero return code
rc: 2
stderr: |-
jq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options] <jq filter> [file...]
...
fatal:[localhost]:失败!=>更改=真
msg:非零返回码
rc:2
标准:|-
jq-命令行JSON处理器[版本1.5-1-a5b5cbe]
用法:jq[选项][文件…]
...
我怀疑这与管道(|)的使用有关,因为当我移除管道,以及随后的jq
命令时,playbook成功完成
手动运行时,.sh
脚本工作正常
我还尝试过使用shell
模块,以及命令
模块-两者都无法运行脚本
如何在Ansible playbook中使用jq和管道功能?退出代码说明:
rc:2
标准:|-
jq-命令行JSON处理器[版本1.5-1-a5b5cbe]
用法:jq[选项][文件…]
jq是指:
有任何使用问题或系统错误
man jq展示:
jq[选项…]过滤器[文件…]
缺少“筛选器”。例如,使用“.”复制输入
jq——咕噜
您是否检查了脚本在手动触发时是否返回正确的返回代码?我不是说工作,而是说返回代码(
echo$?
当您的脚本完成时)。AFAIKjq
强制使用选择器,即使只是
将输入复制到输出您是否考虑过使用ansible方法?使用command
获取docker结果,而无需通过管道传输到jq,并使用command_result.stdout |从_json
@MatthewLDaniel进行解析。它并不总是强制执行,但可能会造成混乱,如图所示。