所有!
我的测试环境中有下一个库存:
[module1_group]
module1-1.host.name
module1-2.host.name
module1-3.host.name
module1-4.host.name
[module2_group]
module2-1.host.name
module2-2.host.name
[module3_group]
module3-1.host.name
module3-2.host.name
[production:children]
module1_group
module2_group
module3_group
我需要在生产组中的所有主机上并行运行我的升级playbook,但同时如果两个主机属于同一模块组,则应逐个升级。例如,当我运行“ansible-playbook production upgrade-all.yml”时,它应该运行(例如)module1-1.host.name,module2-3.host.name,module3-2.host.name的升级但不是同时在module1-1.host.name和module1-4.host.name上。换句话说 - 生产子组中只有一个主机应该在一个时刻升级。模块组中的许多模块组和主机数是随机的。它有可能吗?
答案 0 :(得分:0)
您可以使用Ansible Patterns来实现这一目标:
for ((i=0; i<4; i++)) ; do
ansible-playbook site.yml --limit "module1_group[$i],module2_group[$i],module3_group[$i]"
done
或者也许:
for ((i=0; i<4; i++)) ; do
ansible-playbook site.yml --limit "module*-$i.host.name"
done