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

如何让Ansible基于自定义列表逐项循环执行任务组?

让Ansible按列表项依次执行所有任务的实现方法

你当前的Playbook中,两个任务各自独立遍历列表,导致执行顺序是先完成所有dummy task 1的循环,再完成所有dummy task 2的循环,不符合“对每个列表项依次执行所有任务”的需求。

要实现你期望的执行顺序,可以通过将任务放入block并给block添加循环的方式来实现,具体修改后的Playbook如下:

---
- hosts: my_host
  gather_facts: false
  vars:
    mylist:
      - abc
      - def
      - xyz
  tasks:
    - name: 按列表项批量执行任务组
      block:
        - name: dummy task 1
          shell: "echo 'task 1 {{ item }}'"
        
        - name: dummy task 2
          shell: "echo 'task 2 {{ item }}'"
      loop: "{{ mylist }}"

关键说明:

  • block用于将多个任务打包成一个任务组,当给block添加loop时,Ansible会对列表中的每一项,依次执行block内的所有任务,正好匹配你想要的task1→task2按项循环的逻辑。
  • 修正了原Playbook中的变量名错误:原定义的变量是mylist,但任务中误用了my_list,修改后保持变量名一致,避免出现未定义错误。

执行上述Playbook后,输出结果将与你期望的一致:

task 1 abc
task 2 abc

task 1 def
task 2 def

task 1 xyz
task 2 xyz

内容的提问来源于stack exchange,提问作者Kevin C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:25:22