vagrant默认配置

时间:2017-02-04 14:20:44

标签: vagrant vagrantfile

我有一些配置,当运行init时,无论盒子如何,Vagrantfile中都必须存在这些配置 例如,当我运行vagrant init ubuntu/trusty64vagrant init centos/7时,它必须存在于两个Vagrantfiles中:

config.vm.provider "virtualbox" do |vb|
  vb.memory = 2048
 end

 config.vm.provision "shell", inline: <<-SHELL
   # obligatory provisioning goes here
 SHELL

有什么方法可以配置vagrant,所以当我运行vagrant init时,这些行已经出现在Vagrantfile中了?

2 个答案:

答案 0 :(得分:1)

默认情况下你无法真正改变这种行为,遗憾的是vagrant init没有提出使用你自己的Vagrantfile的选项(那将是整洁但不存在)。有2个模板(参见https://github.com/mitchellh/vagrant/tree/master/templates/commands/init)可以使用,默认模板和最小模板。

您离开了以下选项:

  1. 覆盖默认模板Vagrantfile.erb
  2. 搜索系统中的文件(在Mac上,它应该位于/opt/vagrant/embedded/gems/gems/vagrant-1.9.1/templates/commands/init/Vagrantfile.erb中的某处,具体取决于您的版本)并将其更改为您需要的文件。

    1. 您可以在Vagrantfile目录下拥有一个全局.vagrant.d,该目录将应用于您的所有Vagrant文​​件。请参阅 LOAD ORDER AND MERGING vagrantfile documentation

    2. 使用新命令编写插件以创建Vagrantfile。

    3. 虽然可能有点矫枉过正

答案 1 :(得分:1)

尝试一下 https://www.vagrantup.com/docs/other/environmental-variables.html#vagrant_default_template

export VAGRANT_DEFAULT_TEMPLATE=~/.vagrant.d/Vagrantfile.erb放入〜/ .bash_profile

touch ~/.vagrant.d/Vagrantfile.erb 

有内容

Vagrant.configure("2") do |config|
  config.vm.define "main"
  config.vm.box = "<%= box_name %>"
  <% if box_version -%>
  config.vm.box_version = "<%= box_version %>"
  <% end -%>
  <% if box_url -%>
  config.vm.box_url = "<%= box_url %>"
  <% end -%>
  # config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "private_network", type: "dhcp"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = 4
  end
end

然后source ~/.bash_profile

vagrant init ubuntu/bionic64

效果很好!