Ansible 模块返回非 json 数据

Ansible 模块返回非 json 数据

Ansible Azure 模块以奇怪的格式返回数据Double single quoted characters

''network_interface_names'': [''Ubuntu915'']

因此我无法在任何地方使用它来过滤其他资源。

有什么想法可以做些什么来解决这个问题或者使其成为 json 吗?

  - name: Get facts by name
    azure_rm_virtualmachine_info:
      resource_group: "{{ resource_group }}"
      name: "{{ vm_name }}"
    register: azure_vm_info

  - name: "Network interface List"
    set_fact:
      azure_vm_network_interface: "{{ [ azure_vm_info.vms[0].network_interface_names  ] }}"

  - name: Print Azure VM Info
    debug:
      msg: "Azure VM INFO: {{ azure_vm_info.vms[0].network_interface_names }}"

输出:

   TASK [Print Azure VM Info] ****************************************************************************************************************************************************************************************************************************************************
   ok: [localhost] =>
   msg: 'Azure VM INFO: [''Ubuntu915'']'

答案1

弄清楚了。

ansible.cfg已经设置了stdout_callback = yaml。更改它json解决了该问题

答案2

ansible-playbook标准输出供人类使用,而不是供机器解析。

通常,您会从register:变量中获取任务输出,并通过过滤器发送它们、在表达式中使用它们或以其他方式处理它们。

或者,ansible-runner具有明确定义的输出格式。它的存在是为了给 AWX/Tower 供电。

相关内容