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

如何使用本地脚本处理Ansible的输出,ansible,Ansible,我想运行一些命令,返回一些数据,并使用ansible服务器上的脚本以某种方式处理这些数据。我怎么能这么做 例如: 我想跑步 ansible all -a "cat /etc/redhat-release" 然后我想调用名为version\u parser.py(位于本地ansible服务器上,而不是ansible执行命令的主机)的脚本,并使用参数name\u of_server将此调用的输出作为输入 所以在现实中我得到了类似的结果 ssh server1 "cat /etc/redhat-re

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

例如:

我想跑步

ansible all -a "cat /etc/redhat-release"
然后我想调用名为
version\u parser.py
(位于本地ansible服务器上,而不是ansible执行命令的主机)的脚本,并使用参数
name\u of_server
将此调用的输出作为输入

所以在现实中我得到了类似的结果

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

执行类似操作的最简单方法是什么?

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

---
- 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 }}"

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

---
- 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 }}"