首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ansible中并行执行本地主机任务

在Ansible中并行执行本地主机任务
EN

Stack Overflow用户
提问于 2022-09-19 11:33:12
回答 1查看 139关注 0票数 1

我使用community.vmware.vmware_guest_powerstate集合来启动VM。

问题是一个VM所需的时间是2-5秒,这使得我想启动50个VM时效率很低.

有什么办法并行吗?

剧本:

代码语言:javascript
运行
复制
- 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秒.)

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-10-22 14:26:12

试试这个..。

代码语言:javascript
运行
复制
- hosts: all
  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: "{{ username }}"
        password: "{{ password }}"
        hostname: "{{ server_url }}"
        datacenter: "DC1"
        validate_certs: no
        name: "{{ inventory_hostname }}"
        state: "powered-on"
      delegate_to: localhost

然后用主机列表作为库存并使用叉子运行它:

-i x1.com,x2.com,x3.com,.-叉子10 play.yml

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73772750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档