我有一些配置,当运行init时,无论盒子如何,Vagrantfile中都必须存在这些配置
例如,当我运行vagrant init ubuntu/trusty64
或vagrant 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中了?
答案 0 :(得分:1)
默认情况下你无法真正改变这种行为,遗憾的是vagrant init
没有提出使用你自己的Vagrantfile的选项(那将是整洁但不存在)。有2个模板(参见https://github.com/mitchellh/vagrant/tree/master/templates/commands/init)可以使用,默认模板和最小模板。
您离开了以下选项:
Vagrantfile.erb
搜索系统中的文件(在Mac上,它应该位于/opt/vagrant/embedded/gems/gems/vagrant-1.9.1/templates/commands/init/Vagrantfile.erb
中的某处,具体取决于您的版本)并将其更改为您需要的文件。
您可以在Vagrantfile
目录下拥有一个全局.vagrant.d
,该目录将应用于您的所有Vagrant文件。请参阅 LOAD ORDER AND MERGING
在vagrantfile documentation。
使用新命令编写插件以创建Vagrantfile。
答案 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
效果很好!