如何使用本地脚本处理Ansible的输出

时间:2016-05-24 14:22:10

标签: ansible

我想运行一些返回一些数据的命令,并使用位于ansible服务器上的脚本以某种方式处理这些数据。我怎么能这样做?

例如:

我想跑

ansible all -a "cat /etc/redhat-release"

然后我想用参数version_parser.py调用名为name_of_server的脚本(位于本地ansible服务器上,而不是ansible正在执行命令的主机上),并将此调用的输出作为输入传递。

所以实际上我得到类似的东西

ssh server1 "cat /etc/redhat-release" | version_parser.py server1
ssh server2 "cat /etc/redhat-release" | version_parser.py server2
...

做这样的事情最简单的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以运行远程命令并将结果存储在变量中。接下来,您可以运行local_action并使用存储的变量执行本地脚本:

---
- name: Run remote command
  command: "bash -c 'ls -l /etc/init.d/a* | grep -c app'"
  register: store

- name: Run result against local script
  local_action: "shell echo '{{ store.stdout }}' | /path/to/local/parser.py {{ inventory_hostname }}"