Ansible 2.8.1中get_url模块无法注册返回值问题求助
问题分析与解决
首先看你遇到的报错,核心原因是语法缩进错误:你把register当成了get_url模块的参数,但实际上register是Ansible的任务级关键字,它不属于任何模块的参数列表,必须和name、get_url保持同一缩进层级。
正确的任务写法
把register从get_url的参数块里移出来,调整缩进后代码如下:
- name: Download assembly file to /my/server/location/ get_url: url: https://nexus.mycompany.com/service/rest/v1/search/assets/download?repository=repo-snapshots&group=group&name=name&sort=version&direction=desc validate_certs: no dest: /my/server/location/ force: yes register: downloaded_file # 这里和get_url同级,是任务的顶层关键字
为什么之前会报错?
Ansible的任务结构里,每个任务的顶层元素是name、模块名(比如get_url)、register、when这些全局关键字,而模块的参数必须嵌套在模块名下面的缩进块里。你之前把register放在get_url的参数里,Ansible就会把它当成get_url的参数去校验,而get_url模块根本没有这个参数,所以就抛出了"Unsupported parameters"的错误。
如何获取返回值?
调整缩进后,任务执行成功的话,你就可以在后续任务里正常使用downloaded_file.dest来获取下载文件的路径了。比如后续可以加一个验证任务:
- name: Print downloaded file path debug: msg: "The file was downloaded to {{ downloaded_file.dest }}"
另外补充一点:如果你的dest指定的是目录(比如你这里的/my/server/location/),get_url会自动把文件保存到该目录下,文件名会从URL中提取,这时候downloaded_file.dest就是完整的文件路径,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user1717259
相关产品推荐
相关产品推荐

