Ansible - 如何使用本地脚本

时间:2018-03-30 23:52:16

标签: python json ansible

我有一个ansible playbook,最后从远程设备获取日志并将它们存储在变量中作为JSON结构。我还有一个用Python编写的脚本,它可以解析用这个JSON编写的日志,并显示包含特定日志和文本消息的输出。这是最后一个剧本任务

我有一个问题如何连接它。我尝试使用local_action

- name: Parse by local script
  local_action: "shell echo '{{ result_VPN_log_json }}' | ./checkit.py"

这失败了,因为在JSON中有像'('

这样的字符
"/bin/sh: -c: line 0: syntax error near unexpected token `('", 

在这种情况下,您知道如何修理或如何使用管道吗? 是编写自己的过滤器插件并将checkit.py脚本的输出存储在playbook中的另一个变量中然后打印出来的唯一其他方法吗?

1 个答案:

答案 0 :(得分:0)

您应该使用quote filter来转义由shell解释的字符:

- name: Parse by local script
  local_action: "shell echo '{{ result_VPN_log_json | quote }}' | ./checkit.py"

然而,告诉你的脚本如何处理引用的JSON字符串是不可能的。