Ansible输出格式选项

时间:2015-02-17 15:21:30

标签: bash output ansible ansible-playbook

是否可以选择使用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命令输出吗?

2 个答案:

答案 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文档提供了有关如何执行此操作的详细信息。