如何为Ansible异步循环中的每个条目打印消息?
解决Ansible循环执行命令后打印自定义消息的问题
要实现你想要的效果,只需在原异步任务后新增一个debug模块任务,遍历原任务的执行结果列表,逐个打印自定义消息即可。
修改后的完整Playbook代码
- name: 启动镜像服务器 command: python3 image.pyc {{ item }} "{{ systemVersion }}" register: async_out async: 7200 poll: 0 with_items: "{{ hostinfo_input.hosts }}" - name: 打印任务启动提示 debug: msg: "Running image.pyc for {{ item.item }}" with_items: "{{ async_out.results }}"
说明
- 原任务通过
register: async_out保存了所有循环条目的执行结果,由于用了with_items,结果会以列表形式存放在async_out.results中。 - 新增的
debug任务遍历这个结果列表,通过item.item获取原循环中的每个主机名,拼接成你需要的提示消息。
执行效果示例
TASK [启动镜像服务器] ************* changed: [localhost] => (item=8m007) changed: [localhost] => (item=8m013) TASK [打印任务启动提示] ************* ok: [localhost] => (item={'changed': True, 'item': '8m007', ...}) => { "msg": "Running image.pyc for 8m007" } ok: [localhost] => (item={'changed': True, 'item': '8m013', ...}) => { "msg": "Running image.pyc for 8m013" }
内容的提问来源于stack exchange,提问作者Akash-BLR
相关产品推荐
相关产品推荐

