小智 45
最好的方法是使用哈希数组.您可以将数组定义为:
servers=[
{
:hostname => "web",
:ip => "192.168.100.10",
:box => "saucy",
:ram => 1024,
:cpu => 2
},
{
:hostname => "db",
:ip => "192.168.100.11",
:box => "saucy",
:ram => 2048,
:cpu => 4
}
]
Run Code Online (Sandbox Code Playgroud)
然后你只需迭代服务器数组中的每个项目并定义配置:
Vagrant.configure(2) do |config|
servers.each do |machine|
config.vm.define machine[:hostname] do |node|
node.vm.box = machine[:box]
node.vm.hostname = machine[:hostname]
node.vm.network "private_network", ip: machine[:ip]
node.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", machine[:ram]]
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
fam*_*kin 32
您可以同时运行多个Vagrant盒子,只要它们的配置不会以某种方式相互冲突,例如映射主机上的相同网络端口,或者在同一提供者内使用相同的盒子名称/ ID.手动在提供程序上运行多个框,比如VirtualBox上的多个框,或者让Vagrant注册和启动它们没有区别.结果是一样的,Vagrant只是简化了流程.
您可以使用所谓的多机环境在一个项目/ Vagrantfile中一起管理这些框.它们不一定必须以某种方式连接,易于管理可能是唯一的原因,例如,如果您需要同时启动它们.
或者您可以使用单独的项目/ Vagrantfiles并从各自的目录管理机器,完全分开.
如果运行同一项目的多个实例,则需要项目目录的多个副本,因为Vagrant将盒状态存储.vagrant在项目下的目录中.
tim*_*urb 20
您只需将保存Vagrantfile到新位置的目录复制并vagrant up从中运行即可.
确保在第一次启动框之前复制目录,否则Vagrant会认为这两个位置指的是同一个框.或者,如果您vagrant up在复制目录之前已经执行过,则在复制后删除copied_directory/.vagrant.
dee*_*ive 13
您甚至可以在同一目录中为不同的计算机配置或框使用不同的Vagrantfile
VAGRANT_VAGRANTFILE=Vagrantfile.ubntu_1404_64 VAGRANT_DOTFILE_PATH=.vagrant_ub140464 vagrant up
Run Code Online (Sandbox Code Playgroud)
要么
VAGRANT_VAGRANTFILE=Vagrantfile.ubntu_1404_32 VAGRANT_DOTFILE_PATH=.vagrant_ub140432 vagrant up
Run Code Online (Sandbox Code Playgroud)
Vagrantfile都可以驻留在同一目录中
我能够拥有一个 vagrantfile:
Vagrant.configure("2") do |winconfig|
# stuff
end
Vagrant.configure("2") do |nixconfig|
# stuff
end
Vagrant.configure("2") do |macconfig|
# stuff
end
Run Code Online (Sandbox Code Playgroud)
然后我可以把它们提出来vagrant up --parallel。正如其他人提到的,不同的流浪文件可能更有利于可维护性。
| 归档时间: |
|
| 查看次数: |
42776 次 |
| 最近记录: |