Se você tiver várias VMs, convém procurar um programa chamado pdsh. Ele pode ser usado para executar comandos (via ssh) em várias máquinas remotas (reais ou virtuais) em paralelo.
Ele foi escrito para uso em clusters HPC, mas é uma ferramenta sysadmin útil para trabalhar com qualquer grupo de máquinas linux / unix.
link
por exemplo. se eu tiver várias máquinas definidas com o atributo "compute" (nova-compute nodes em uma implementação de openstack), posso executar o seguinte comando para descobrir quantos nós têm 16 ou mais núcleos livres (de 24 núcleos por nó ) e são capazes de executar uma VM xxlarge de 16 núcleos:
# pdsh -g compute "ps hwwu -Ckvm | sed -e 's/.*-smp //' -e 's/,.*//' |
awk '{VMS += 1 ; CPUS += \} END {print VMS, CPUS, 24-CPUS}'" | \
awk '$4 > 15 {print}' | sort -k4 -n
comp17: 6 8 16
comp19: 6 8 16
comp23: 6 8 16
comp26: 7 8 16
comp51: 7 8 16
comp56: 6 8 16
comp71: 7 8 16
comp78: 7 8 16
comp81: 6 8 16
comp11: 6 7 17
comp47: 6 7 17
comp79: 6 7 17
comp09: 5 6 18
comp29: 5 5 19
comp27: 4 4 20
(saída de uso real, nomes de host editados para anonimato)
O comando dentro daspas duplas é executado nas máquinas remotas (as regras de cotação do shell se aplicam, portanto, o \ $ 1 no primeiro awk) e o restante (o segundo awk e o sort) são executados na máquina local.