跳转到主要内容

并行运行ansible剧本。

项目描述

ansible-parallel

TL;DR

pip install ansible-parallel
ansible-parallel *.yml

并行执行多个ansible剧本。

就我的使用情况而言,顺序执行(使用包含多个 import_playbooksite.yml)需要30分钟,而并行执行只需要10分钟。

用法

ansible-parallel 的运行方式类似于 ansible-playbook,但接受多个剧本。所有剩余的选项都传递给 ansible-playbook,因此您可以为例如运行 ansible-parallel --check *.yml

示例

启动非常简单

$ ansible-parallel *.yml

运行时,它会显示正在进行的实时更新,每个剧本一行

web.yml:     TASK [common : Configure Debian repositories] *****************************
gitlab.yml:  TASK [common : Configure IP failover] *************************************
staging.yml: TASK [common : Configure Debian repositories] *****************************
dev.yml:     Done.

完成时,它会打印出完整的报告,例如

# Playbook playbook-webs.yml, ran in 123s

web1.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0
web2.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0
web3.meltygroup.com         : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0


# Playbook playbook-staging.yml, ran in 138s

staging1.meltygroup.com         : ok=64   changed=6    unreachable=0    failed=0    skipped=18   rescued=0    ignored=0


# Playbook playbook-gitlab.yml, ran in 179s

gitlab-runner1.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab-runner2.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab-runner3.meltygroup.com         : ok=47   changed=0    unreachable=0    failed=0    skipped=13   rescued=0    ignored=0
gitlab.meltygroup.com                 : ok=51   changed=0    unreachable=0    failed=0    skipped=12   rescued=0    ignored=0


# Playbook playbook-devs.yml, ran in 213s

dev1.meltygroup.com             : ok=121  changed=0    unreachable=0    failed=0    skipped=22   rescued=0    ignored=0
dev2.meltygroup.com             : ok=121  changed=0    unreachable=0    failed=0    skipped=22   rescued=0    ignored=0

已知替代方案

ansible-pull

如果只想保留Ansible的推行为,那么ansible-parallel是一个不错的选择,但如果您有很多剧本,并且正在寻找ansible-pull与适当的报告系统(如ARA

xargs

一种使用3行bash快速完成的方法

ls -1 *.yml | xargs -n1 -P16 sh -c 'ansible-playbook "$$0" > "$$0.log"' ||:
grep -B1 "^\(changed\|fatal\|failed\):" *.log
echo *.yml.log | xargs -n1 sed -n -e '/^PLAY RECAP/,$$p'

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分发

ansible-parallel-2023.7.26.tar.gz (5.1 kB 查看哈希值)

上传于 源代码

构建版本

ansible_parallel-2023.7.26-py3-none-any.whl (5.5 kB 查看哈希值)

上传于 Python 3

支持