如何以json,csv或其他格式获取ansible ad-hoc命令的输出

时间:2018-05-04 19:27:07

标签: linux ansible

以json,csv或其他格式获取Ansible ad-hoc命令输出的方法是什么

3 个答案:

答案 0 :(得分:2)

ansible.cfg添加:

[defaults]
stdout_callback = json

请参阅documentation

而不是:

ok: [localhost] => {
    "msg": "test"
}

你将拥有:

{
    "plays": [
        {
            "play": {
                "id": "720000f8-9450-586c-9a68-000000000005", 
                "name": "Json Test"
            }, 
            "tasks": [
                {
                    "hosts": {
                        "localhost": {
                            "_ansible_no_log": false, 
                            "_ansible_verbose_always": true, 
                            "changed": false, 
                            "msg": "test"
                        }
                    }, 
                    "task": {
                        "id": "720000f8-9450-586c-9a68-000000000007", 
                        "name": "Debug"
                    }
                }
            ]
        }
    ], 
    "stats": {
        "localhost": {
            "changed": 0, 
            "failures": 0, 
            "ok": 1, 
            "skipped": 0, 
            "unreachable": 0
        }
    }
}

对于以下剧本:

---
- name: Json Test
  hosts: localhost
  gather_facts: False

  vars: 
    test: test


  tasks:
    - name: Debug
      debug:
        msg: "{{ test  }}"

答案 1 :(得分:2)

如果您不想修改.cfg文件,也可以通过环境变量来完成它,例如:

ANSIBLE_LOAD_CALLBACK_PLUGINS=true ANSIBLE_STDOUT_CALLBACK=json ansible all -a "df -h /tmp"

此处有关ansible环境变量的更多信息 https://docs.ansible.com/ansible/latest/reference_appendices/config.html#environment-variables

答案 2 :(得分:0)

您至少需要使用Ansible 2.5

,然后在您的ansible配置中进行设置:

stdout_callback = json
bin_ansible_callbacks = True

有关ansible config的快速注释(抱怨?)...配置文件不是可加的。 如果您有多个配置文件(例如/etc/ansible/ansible.cfg和〜/ .ansible.cfg),则只会使用〜/ .ansible中的值。

这是配置文件的顺序:

https://docs.ansible.com/ansible/latest/reference_appendices/config.html#the-configuration-file

这是错误:

https://github.com/ansible/ansible/issues/17914

这也是完整的回调插件列表:

https://docs.ansible.com/ansible/2.6/plugins/callback.html#plugin-list