是否可以选择使用ansible(不是任何其他脚本)格式化ansible输出?例如
name: Show version
sudo: true
hosts: web_front_end
tasks:
- name: Create yum cache
shell: yum makecache
- name: Check the version of Portal
shell: rpm -qa | grep portal
register: portal
- debug: msg={{portal.stdout}}
tags:
- portal
- wfe
我想只获得
TASK: [debug msg={{portal.stdout}}]
一部分。或者甚至有办法只获取shell命令输出吗?
答案 0 :(得分:5)
我有一个格式化输出的插件。要点是here,但要点是:
# Save as <folder with your playbook>/callback_plugins/<some name>.py
# Optionally use no_log: True on your playbook/roles/tasks to suppress other output
import sys
import pprint
class CallbackModule(CallbackBase):
def log(self, host, category, data):
pp = pprint.PrettyPrinter(indent=2, stream=sys.stdout)
pp.pprint(data)
答案 1 :(得分:3)
你基本上有两个选择。一个是做人们上面描述的,即将ansible命令的输出传递给perl,sed,awk等等。
第二种方法是编写自己的Python脚本,直接调用ansible。 Ansible是用Python编写的,因此您可以直接从自己的Python代码中调用它。其Python API上的Ansible文档提供了有关如何执行此操作的详细信息。