如何确定Ansible中maven_artifact、get_url等任务返回对象的类型与字段
确定Ansible任务返回对象类型与字段的三种方案
- 方案1:通过register+debug直接打印完整返回结构
给目标任务添加register关键字绑定变量,再用debug模块输出该变量即可看到全部字段:
- name: 执行get_url下载任务 get_url: url: "你的maven制品下载地址" dest: "/tmp/artifact.tgz" register: get_url_res - name: 打印完整返回内容 debug: var: get_url_res
执行playbook时加上-v参数就能看到完整的返回结构,你可以同时打印之前maven_artifact任务的返回值,直接对比两者的字段差异,比如maven_artifact返回的本地文件路径字段为path,而get_url对应的字段是dest,直接替换后续逻辑中引用的字段名即可修复报错。
- 方案2:通过ansible-doc命令查看模块官方返回值说明
所有Ansible官方模块的文档都明确标注了返回字段的类型、含义,直接在命令行执行对应模块的文档查询命令即可:
# 查看get_url模块的返回值说明 ansible-doc get_url # 查看maven_artifact模块的返回值说明 ansible-doc maven_artifact
翻到文档末尾的RETURN章节,就能看到所有固定返回字段的详细说明。
- 方案3:运行时动态获取类型与字段校验
如果需要在playbook运行时动态判断变量类型、校验是否存在指定字段,可以用type_debug过滤器和assert模块实现:
# 打印返回对象的类型 - debug: msg: "返回对象类型:{{ get_url_res | type_debug }}" # 校验返回对象是否包含预期字段 - assert: that: - "'dest' in get_url_res" - get_url_res.status_code == 200
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

