community.general.jc 过滤器 – 将许多 shell 命令和文件类型的输出转换为 JSON

注意

此过滤器插件是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此过滤器插件,有关详细信息,请参见 要求

要在 playbook 中使用它,请指定:community.general.jc

community.general 1.1.0 中的新增功能

概要

  • 将许多 shell 命令和文件类型的输出转换为 JSON。

  • 使用 jc 库

要求

以下要求是在执行此过滤器的本地控制器节点上需要的。

输入

这描述了过滤器的输入,即 | community.general.jc 之前的数值。

参数

注释

输入

字符串 / 必需

要转换的数据。

位置参数

这描述了过滤器的定位参数。这些是在以下示例中的 positional1positional2 等值:input | community.general.jc(positional1, positional2, ...)

参数

注释

解析器

字符串 / 必需

输入数据的正确解析器。

例如 ifconfig

注意:在解析器模块名称中使用下划线代替短划线(如果有)。

有关最新解析器列表,请参见 https://github.com/kellyjonbrazil/jc#parsers

关键字参数

这描述了过滤器的关键字参数。这些是在以下示例中的 key1=value1key2=value2 等值:input | community.general.jc(key1=value1, key2=value2, ...)

参数

注释

quiet

布尔值

设置为 false 以不抑制警告。

选项

  • false

  • true ← (默认)

raw

布尔值

设置为 true 以返回预处理的 JSON。

选项

  • false ← (默认)

  • true

备注

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须列在关键字参数之前:input | community.general.jc(positional1, positional2, key1=value1, key2=value2)

示例

- name: Install the prereqs of the jc filter (jc Python package) on the Ansible controller
  delegate_to: localhost
  ansible.builtin.pip:
    name: jc
    state: present

- name: Run command
  ansible.builtin.command: uname -a
  register: result

- name: Convert command's result to JSON
  ansible.builtin.debug:
    msg: "{{ result.stdout | community.general.jc('uname') }}"
  # Possible output:
  #
  # "msg": {
  #   "hardware_platform": "x86_64",
  #   "kernel_name": "Linux",
  #   "kernel_release": "4.15.0-112-generic",
  #   "kernel_version": "#113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020",
  #   "machine": "x86_64",
  #   "node_name": "kbrazil-ubuntu",
  #   "operating_system": "GNU/Linux",
  #   "processor": "x86_64"
  # }

返回值

描述

返回值

任意

处理后的输出。

返回:成功

作者

  • Kelly Brazil (@kellyjonbrazil)

提示

每种条目类型的配置条目具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。