Ansible 没有“;包括#u任务”;并同时运行任务?

Ansible 没有“;包括#u任务”;并同时运行任务?,ansible,Ansible,我需要一种方法来加速我的剧本,也许是更好的逻辑重组。它现在按顺序运行。任务很简单——从AWX运行playbook,它将备份虚拟机列表 我提供了一个AWX额外变量中的VM列表: backupList: - vmName: VM1 backupAge: 2d - vmName: VM2 backupAge: 5d - vmName: VM3 backupAge: 1d backupDirectory: /vmfs/volumes/NFS_BACKUPS 第一个剧

我需要一种方法来加速我的剧本,也许是更好的逻辑重组。它现在按顺序运行。任务很简单——从AWX运行playbook,它将备份虚拟机列表

我提供了一个AWX额外变量中的VM列表:

backupList:
  - vmName: VM1
    backupAge: 2d
  - vmName: VM2
    backupAge: 5d
  - vmName: VM3
    backupAge: 1d
backupDirectory: /vmfs/volumes/NFS_BACKUPS
第一个剧本很简单:

- name: Process VM backup here
  include_tasks: processBackup.yml
  vars:
    vm_name: "{{ item.vmName }}"
    backupAge: "{{ item.backupAge }}"
  with_items: "{{ backupList }}"
它通过使用“include_tasks”调用第二个playbook来读取额外的变量和循环,其中写入了所有功能:克隆VM、复制到NFS服务器,并确保保留定义数量的备份副本

使用不同的VM名称和备份期限执行的任务基本相同。在此配置中,它是按顺序执行的,需要很长时间,尤其是复制到备份服务器


因此,我想知道是否有更好的方法来重新构造代码,以便为每个VM名称同时运行任务?

这是我最终得到的解决方案,它适用于我的示例。 我在AWX资源清册中创建了一组名为“备份”的主机,其中包含我需要备份的虚拟机主机名的IP。我从模板中移动了额外的变量,并将它们放在组中的每个主机下,因此看起来是这样的(每个IP的值不同):

现在,当ansible迭代抛出“备份”组中的主机列表时,它还可以访问它们自己的VAR。另外,在模板中启用分叉后,我拥有ansible的自然线程功能

我的第二个剧本没有改变,但第一个剧本(又名驱动程序)改变了一点——我不再需要带项目的“

- name: Backup VMs to NFS server
  hosts: backup
  gather_facts: no

  tasks:

    - name: Process VM backup here
      include_tasks: processBackup.yml
      vars:
        vm_name: "{{ vmName }}"
        backupAge: "{{ backupAge }}"
      delegate_to: localhost
希望它能帮助某人:)

- name: Backup VMs to NFS server
  hosts: backup
  gather_facts: no

  tasks:

    - name: Process VM backup here
      include_tasks: processBackup.yml
      vars:
        vm_name: "{{ vmName }}"
        backupAge: "{{ backupAge }}"
      delegate_to: localhost