提问人:Vijayanand A 提问时间:10/18/2023 最后编辑:U880DVijayanand A 更新时间:10/27/2023 访问量:80
Ansible URI 模块和 ServiceNow 附件 API
Ansible URI Module and ServiceNow Attachment API
问:
我使用带有 URI 模块的 Ansible 将 PDF 或 CSV 文件附加到现有事件,并且它没有问题地附加。
但是当我尝试下载相同的附件时,CSV是乱码或加密的,或者PDF说,无法加载。请参阅下面的代码和错误。
用于上传 CSV 或 PDF 文件的 Ansible 代码
- name: "Attach output CSV file to incident"
ansible.builtin.uri:
url: "{{ SN_HOST }}api/now/attachment/upload"
user: "{{ SN_USERNAME }}"
password: "{{ SN_PASSWORD }}"
method: POST
return_content: true
validate_certs: false
force_basic_auth: no
status_code: 201
body_format: form-multipart
headers:
Accept: 'application/json'
Content-Type: 'multipart/form-data'
body:
table_name:
content: incident
table_sys_id:
content: 'c6957640470388444c736d4315'
uploadFile:
filename: "../../win_playbooks/reports/User_Manual.pdf"
register: attach_file
尝试打开附加的 PDF 文件时出错
尝试打开下载的附加 CSV 文件时出错
当我手动使用 ServiceNow REST API 资源管理器或 ServiceNow UI 上传和下载附加的 PDF 或 CSV 文件时,它运行良好。我想问题是,当我尝试从上述 Ansible 代码上传 PDF 或 CSV 时,它不起作用。
答:
0赞
Vijayanand A
10/27/2023
#1
作为临时修复,我直接在 Ansible 任务中使用了命令,该任务在附加到 ServiceNow 事件记录时不会对任何文件进行编码。curl
我相信 Ansible 模块的行为,当与 base64 (charset=UTF-8) 一起使用时,它将使用 base64 (charset=UTF-8) 自动编码,目前似乎没有办法绕过这种正文格式的编码。uri
body_format: form-multipart
body_format
,“正文的序列化格式。当设置为 json、form-multipart 或 form-urlencoded 时,如果需要,对 body 参数进行编码..."
所以这是目前唯一的选择。curl
评论
body_format
,“正文的序列化格式。当设置为json
、form-multipart
或form-urlencoded
时,如果需要,请对 body 参数进行编码......”这可能需要解决。{{ CSV_file_content | b64decode }}
lang-yml headers: Accept: "application/json, chartset=' '"
body_format: form-multipart