如何使用Ansible uri模块打印API请求和响应



我试图找到一种方法来打印API请求和对日志文件的响应。但是Ansible URI模块不提供请求数据。

有人知道在Ansible中打印请求和响应文件的机制吗?

示例:

name: update cms
uri:
url:  '{{ cms_api.msg }}'
method: POST
body_format: json
body:
api_password: "{{ api_password  }}"
name: "{{ item.Name }}"
ip_address: "{{ item.IPAddress }}"
subnet_mask: "{{ item.SubnetMask }}"
router: "{{ item.Router }}"
ip_range: "{{ item.IPAddresses }}"
options: "{{ item.Options }}"
pool_name: "{{ item.PoolName}}" 
validate_certs: no
return_content: yes
register: dhcp_subnet_response
loop: "{{ ip_addrs_1.list }}"
delegate_to: localhost

我需要打印上述请求和响应两个文件。由于这个api调用是一个循环,所以我需要为每个请求打印request|response。

由于您的文章包含几个不同的问题,您可以先查看一般文档

  • 注册变量
  • 返回值-常见
  • uri模块-与Web服务交互-返回值及其示例

阅读和关于之后

但是Ansible URI模块不提供请求数据

然后您可以查看以下示例行动手册

---
- hosts: localhost
become: false
gather_facts: false
tasks:
- name: Get response with 'uri' module
uri:
url: "https://example.com"
method: GET
body_format: raw     # default
return_content: true # default 'false'
status_code: 200
register: result
- name: Show result
debug:
var: result

导致的内容https://example.com,是IANA管理的保留域。

有人知道打印的机制吗

页面内容本身可以通过访问

- name: Show content
debug:
msg: "{{ result.content }}"

打印。。。提交到Ansible

,您可以在Ansible或Ansible中将变量写入文件-将注册的变量保存到文件。