ansible,命令模块和带有管道的jq

时间:2019-04-09 03:10:51

标签: ansible

我正在尝试运行一个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和管道功能?

1 个答案:

答案 0 :(得分:0)

退出代码显示:

  

rc:2     stderr:|-       jq-命令行JSON处理器[版本1.5-1-a5b5cbe]       用法:jq [选项] [文件...]

jq exit code 2的意思是:

  

存在使用问题或系统错误

man jq显示:

  

jq [选项...]过滤器[文件...]

“过滤器”丢失。放一个“。”例如复制输入

  

jq --slurp。