Ansible剧本,NPM任务未并行运行

时间:2019-05-28 18:11:49

标签: ansible

我正在使用terraform构建AWS Infra(100个现货实例),并且可以在Linux上拆分某些任务-ubuntu(现货实例),当我运行npm install任务(nodeJS)时,在Ansible剧本中看到只有5台机器在同一时间完成该任务,然后继续进行下5个批次,依此类推。 30分钟后,Ansible完成了任务

其他任务(例如计算机上的安装服务)可以并行运行


  • 名称:等待100秒,但仅在5秒后开始检查
    wait_for_connection:
    延迟:5 超时:100

  • 名称:作为jenkins从属连接-创建代理标签文件
    复制: 目的地:“ / home / ubuntu / jenkins-swarm / run-jenkins-agent-label” 内容:AGENTS_LABEL _ {{job_name}} _ {{build_number}}
    注册:sout

    -调试:msg =“ {{sout.stdout_lines}}”

  • 名称:作为詹金斯奴隶进行连接
    外壳:|
    sudo服务jenkins-agent启动 sudo服务jenkins-agent状态 注册:sout

  • 调试:msg =“ {{sout.stdout_lines}}”

  • 名称:从S3复制到FS(共享)
    Shell:/ home / {{ansible_ssh_user}} /。local / bin / aws s3 sync“ s3:// automationtool / {{job_name}} _ {{build_number}}”“ / home / {{ansible_ssh_user}} / src_temp”
    注册:sout

  • 名称:FS上的NPM安装源(共享)
    外壳:|
    cd / home / {{ansible_ssh_user}} / src_temp sudo npm install
    注册:sout

  • 调试:msg =“ {{sout.stdout_lines}}”

我希望看到所有机器(〜100台)都在同一时间获取并执行任务

1 个答案:

答案 0 :(得分:1)

解释你为什么

  

看到只有5台计算机同时完成该任务,然后继续进行下5批操作,依此类推。 30分钟后,Ansible完成了任务

让我引用Strategies

  

默认情况下,播放是采用线性策略进行的,在该策略中,所有主机将在任何主机开始下一个任务之前运行每个任务,并使用分叉数(默认5 )进行并行化。

在剧本中设置序列

- hosts: all
  serial: "100%"
  

查看所有计算机(约100台)正在同时获取并执行任务。

其他选项在Delegation, Rolling Updates, and Local ActionsANSIBLE PERFORMANCE TUNING中可用。