我正在尝试运行一个docker命令,该命令返回容器列表及其大小。
命令为docker container 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...]
...
我怀疑这与管道(|)的使用有关,因为当我删除它和随后的jq
命令时,剧本已成功完成。
.sh
脚本在手动运行时可以正常工作。
我还尝试过使用shell
模块和command
模块-两者都无法运行脚本。
如何在Ansible剧本中使用jq
和管道功能?
答案 0 :(得分:0)
退出代码显示:
rc:2 stderr:|- jq-命令行JSON处理器[版本1.5-1-a5b5cbe] 用法:jq [选项] [文件...]
jq exit code 2的意思是:
存在使用问题或系统错误
man jq显示:
jq [选项...]过滤器[文件...]
“过滤器”丢失。放一个“。”例如复制输入
jq --slurp。