Ansible中如何将变量与任务执行结果拼接使用?附代码示例
使用自定义变量结合前置任务结果的Ansible示例
看起来你已经迈出了关键的一步——定义自定义变量并通过register捕获前置任务的结果,下面我帮你把这段代码梳理清楚,顺便给你演示怎么在后续任务里用上前置任务的执行结果:
- hosts: localhost vars: v_hostname: XXXXXXXXXXXXX v_datacentre: DC-UK-LON-GS v_username: YYYYYYYY v_password: XXXXXXXX connection: local gather_facts: false tasks: - name: 查找VM对应的文件夹 vmware_guest_find: hostname: "{{ v_hostname }}" datacenter: "{{ v_datacentre }}" username: "{{ v_username }}" password: "{{ v_password }}" validate_certs: no name: MYVMNAME register: folder_result # 把变量名改成更清晰的标识,方便后续识别 - name: 打印前置任务的结果 debug: # vmware_guest_find返回的folders是列表结构,这里取第一个匹配的文件夹路径 msg: "找到的VM文件夹路径: {{ folder_result.folders[0] }}"
关键要点说明:
- 自定义变量的使用:你定义的
v_hostname、v_datacentre这些变量,直接用{{ 变量名 }}的格式就能在任务参数里引用,这部分你已经处理得很规范了。 - 前置任务结果的调用:通过
register: 变量名把vmware_guest_find的执行结果存起来后,后续任务可以通过{{ 注册变量名.返回字段 }}的方式访问具体内容。比如这里folder_result.folders[0]就是取返回结果里的第一个文件夹路径。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

