Ansible内置复制任务-是否仅以串行方式运行?

Ansible内置复制任务-是否仅以串行方式运行?,ansible,ansible-2.x,Ansible,Ansible 2.x,我找不到任何明确说明这一点的文档,但是如果我有一个playbook,它有一个复制任务,并且在多个主机上同时触发,我注意到当涉及到复制任务时,一次只执行一个播放。所有其他主机上的Playbook执行暂停,然后在第一个主机完成后,其中一个主机继续执行。等等 有没有任何文档可以让人指出,该副本将以独占方式运行?我认为Ansible可以通过这种方式实现它,以避免磁盘查找等方面的低效。有什么指针吗 (如果默认情况下它确实是连续运行的,那么有没有办法并行运行它们?当然只有在它不会产生反作用的情况下) 下面是

我找不到任何明确说明这一点的文档,但是如果我有一个playbook,它有一个复制任务,并且在多个主机上同时触发,我注意到当涉及到复制任务时,一次只执行一个播放。所有其他主机上的Playbook执行暂停,然后在第一个主机完成后,其中一个主机继续执行。等等

有没有任何文档可以让人指出,该副本将以独占方式运行?我认为Ansible可以通过这种方式实现它,以避免磁盘查找等方面的低效。有什么指针吗

(如果默认情况下它确实是连续运行的,那么有没有办法并行运行它们?当然只有在它不会产生反作用的情况下)

下面是我的一个示例任务。这会将单个ISO映像(从控制器节点)复制到多个目标主机。我正在使用Ansible v2.9.4

-name:将二进制文件复制到目标主机
副本:
src:“{{binary_local_path}”
dest:{{binary_remote_path}}”
寄存器:结果

默认情况下,任务并行运行。使用。它将为您提供一个新的解决方案。例如,给定一个剧本

shell>cat测试副本/test-28.yml
-主持人:测试组01、测试组02、测试组03
任务:
-副本:
src:/etc/passwd
目的地:/tmp/测试
命令

shell>ansible runner运行测试副本-i ID01-p test-28.yml
创建详细信息

shell>树测试副本/artifacts/ID01/
测试副本/工件/ID01/
├── 命令
├── 事实缓存
├── job_事件
│   ├── 10-c9ee2f18-9f8e-4b51-a5a5-81c7353131fb.json
│   ├── 1-45a882a8-a95d-4026-a374-fa3be0dc26bb.json
│   ├── 2-3d614ae4-866b-7e82-3e7a-000000000008.json
│   ├── 3-3d614ae4-866b-7e82-3e7a-00000000000a.json
│   ├── 4-4eb0b550-3537-4120-9fad-6ed5a7703f0d.json
│   ├── 5-e305a7d2-d3bd-409b-963e-4b214a6a129b.json
│   ├── 6-6949e8cc-458a-4626-b2cb-68a244e308af.json
│   ├── 7-e1049b61-5c27-4627-b5b0-181533cb458a.json
│   ├── 8-722940a2-1edd-45b7-8418-697e6f728000.json
│   └── 9-b5983d4c-6973-4626-93ba-462c00cbfa78.json
├── 钢筋混凝土
├── 地位
└── stdout
2个目录,14个文件
查看作业单元事件。简化分析。安装角色vbotka.ansible_lib

shell>ansible galaxy角色安装vbotka.ansible_lib
并使用剧本中的任务

shell>cat测试-29.yml
-主机:本地主机
变量:
al_runner_events_dir:测试副本/工件/ID01/job_events
任务:
-包括以下角色:
名称:vbotka.ansible_lib
任务来自:所有跑步者事件
-调试:
msg:“{item.counter}”
{{item.event_data.host}
{{item.event_data.task}
开始:{{item.event_data.start}
结束:{{item.event_data.end}”
循环:{{al_runner_events_list}排序(attribute='counter')}
回路控制:
标签:“{item.counter}}”
时间:item.event_data.duration |默认值(0)>0
给予

shell>ansible剧本测试-29.yml | grep msg
msg:'7 test \'03复制开始:2020-10-30T07:19:55.541914结束:2020-10-30T07:20:00.078211'
msg:'8 test_01 copy start:2020-10-30T07:19:55.520058 end:2020-10-30T07:20:00.239671'
消息:“9测试02复制开始:2020-10-30T07:19:55.527841结束:2020-10-30T07:20:00.460820”
可以看出复制任务是并行运行的


如果你设定

shell>cat测试副本/test-28.yml
-主持人:测试组01、测试组02、测试组03
序列号:1
任务:
-副本:
src:/etc/passwd
目的地:/tmp/测试
复制任务将以串行方式运行

shell>ansible剧本测试-29.yml | grep msg
msg:'5 test_01 copy start:2020-10-30T10:12:55.830801 end:2020-10-30T10:12:59.696363'
消息:“9测试02复制开始:2020-10-30T10:12:59.727570结束:2020-10-30T10:13:02.787844”
消息:“13测试03复制开始:2020-10-30T10:13:02.820704结束:2020-10-30T10:13:05.835439”