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 供电。