在主机上安装顺序with_items

时间:2017-10-06 13:25:44

标签: parallel-processing command ansible synchronous

我有一种情况,我想循环一个列表(with_items)并执行命令。但是,除非第一个项目已在所有主机上完成,否则下一个项目无法启动。我将循环的项目数量将是巨大的。但是,主机不应该对正在使用的项目有任何偏差。除非项目1已在整个主机池中完成,否则任何主机都不应启动item2。

要创建概念证明,我希望实现以下目标

- name: proof of concept
  command: bash -c /home/user/my_test_script.sh
  with_items: 
    - item_1
    - item_2
    ....
    - item_n

my_test_script.sh在每个主机上都有不同的睡眠(x),模拟某些主机在执行作业时可能会更慢。

我已经查看过,wait_for,wait_until等等。但是还没有找到执行并行任务的解决方案(with_items),它运行(对于列表中的每个项目)'同步'(时间不明确) rsync)用于许多给定项目。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

相关:Ansible: How to iterate over an role with an array?

如果您使用Ansible 2.3.0或更高版本,请查看include_role。您可以编写一个使用变量参数调用脚本的角色。然后你的剧本可以循环播放这个角色。

作用:

- name: proof of concept
  command: bash -c /home/user/my_test_script.sh {{ script_param }}

剧本:

  - include_role:
      name: test_script
    with_items:
    - item1
    - item2
    - item3
    vars:
      script_param: "{{ item }}"