Vagrant多机并行启动

Ken*_*n J 11 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
Run Code Online (Sandbox Code Playgroud)

我已经多次运行,Vagrant只在第一个启动后启动第二个vm.

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

Nic*_*lay 9

vagrant up支持使用以下键启动并行VM --parallel

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

默认vagrant提供程序VirtualBox不支持它,但是您可以使用启动虚拟机,同时xargs支持使用键并行执行命令-P <max-procs>(示例正是为您的Vagrantfile提供的):

grep config.vm.define Vagrantfile | awk -F'"' '{print $2}' | xargs -P2 -I {} vagrant up {}
Run Code Online (Sandbox Code Playgroud)


wes*_*man 6

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

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

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

命令分解

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

  • *+1*用于保持网站整洁。 (3认同)