You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何实现每个主机仅打印列表中的单个对应项

原配置的问题在于with_items会让每台执行任务的主机完整遍历整个列表,因此每台主机都会输出所有列表项,无法实现单主机对应单项的需求。

解决方案

通过Ansible内置魔法变量获取当前主机在执行列表中的索引,匹配目标列表对应位置的元素即可实现需求,配置示例如下:

tasks:
  - name: 单主机匹配单列表项
    debug:
      msg: "{{ my_list[ansible_play_hosts_all.index(inventory_hostname)] }}"
    vars:
      my_list: ['a', 'b']

实现说明

  • ansible_play_hosts_all是Ansible内置变量,存储当前play内所有执行主机的列表,顺序与inventory中定义的主机顺序完全一致
  • ansible_play_hosts_all.index(inventory_hostname)会返回当前主机在上述列表中的下标索引,主机顺序越靠前索引值越小
  • 自定义变量my_list存储需要分配的所有项,通过下标取值即可让每台主机拿到独属的分配项

注意事项

需保证my_list的长度与当前play执行的主机数量完全一致,否则会出现索引越界报错。

内容的提问来源于stack exchange,提问作者Texia Plazaola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:54:04