Vagrant多机并行启动

时间:2017-08-22 17:24:25

标签: vagrant

我试图配置一个主 - 主MySQL对,只有当它们都启动时才能正确配置它们。

Vagrant.configure("2") do |config|
  web.vm.box = "centos/7"

  config.vm.define "primary" do |primary|
    .......
  end

  config.vm.define "secondary" do |secondary|
    .......
  end
end

我已经多次跑过,Vagrant只在第一个vm启动后才启动第二个vm。

有没有办法迫使Vagrant同时启动两个VM?

2 个答案:

答案 0 :(得分:6)

vagrant up支持使用密钥--parallel并行启动VM:

  

- [no-] parallel如果提供者支持,则启用或禁用并行性

默认vagrant提供商VirtualBox不支持它,但您可以使用xargs同时启动虚拟机,-P <max-procs>支持使用密钥grep config.vm.define Vagrantfile | awk -F'"' '{print $2}' | xargs -P2 -I {} vagrant up {} 执行并行命令(示例)完全为您的Vagrant文​​件提供):

@Model

答案 1 :(得分:1)

Vagrantfile可能在变量中包含框,因此静态greping Vagrantfile不会在所有情况下都成功。

以下是捕获vagrant status创建的名称的另一种方法

vagrant status | \
awk '
BEGIN{ tog=0; }
/^$/{ tog=!tog; }
/./ { if(tog){print $1} }
' | \
xargs -P2 -I {} vagrant up {}

命令故障

  • vagrant status获取由Vagrantfile管理的计算机的报告,该报告打印为2行空行之间的每行计算机数。
  • awk命令捕获2条空行之间的所有机器行,并打印每条机器行的第一个字(它们是机器名)。
  • xargs命令将流更改为可以使用-P选项并行使用的参数。