【发布时间】:2022-10-22 22:26:12
【问题描述】:
我正在使用 community.vmware.vmware_guest_powerstate 集合让 Ansible 启动 VM。
问题是 1 个 VM 所需的时间可能是 2-5 秒,这使得当我想启动 50 个 VM 时效率非常低...
有没有办法让它并行?
剧本:
- hosts: localhost
gather_facts: false
collections:
- community.vmware
vars:
certvalidate: "no"
server_url: "vc01.x.com"
username: "{{ lookup('ansible.builtin.env', 'API_USER', default=Undefined) }}"
password: "{{ lookup('ansible.builtin.env', 'API_PASS', default=Undefined) }}"
tasks:
- name: "setting state={{ requested_state }} in vcenter"
community.vmware.vmware_guest_powerstate:
username: "{{ lookup('ansible.builtin.env', 'API_USER', default=Undefined) }}"
password: "{{ lookup('ansible.builtin.env', 'API_PASS', default=Undefined) }}"
hostname: "{{ server_url }}"
datacenter: "DC1"
validate_certs: no
name: "{{ item }}"
state: "powered-on"
loop: "{{ hostlist }}"
这是 Ansible 的输出:(每行可能需要 2-5 秒 ...)
TASK [setting state=powered-on in vcenter] ************************************************************************************************************
Monday 19 September 2022 11:17:59 +0000 (0:00:00.029) 0:00:08.157 ******
changed: [localhost] => (item=x1.com)
changed: [localhost] => (item=x2.com)
changed: [localhost] => (item=x3.com)
changed: [localhost] => (item=x4.com)
changed: [localhost] => (item=x5.com)
changed: [localhost] => (item=x6.com)
changed: [localhost] => (item=x7.com)
【问题讨论】:
-
试试async。
-
@VladimirBotka async 将保持 ansible 运行而无需等待,但该过程仍将一个接一个地启动它们......(所以最后一个 vm 在一个巨大的列表中 - 仍然受到......)
标签: performance ansible performance-testing