Mein Ziel ist es, ein Vagrantfile zu erstellen, in dem ich entweder Docker oder VirtualBox mit dem --provider Flag (z. B. vagrant up --provider = virtualbox) wählen kann. Ich habe ein Problem, weil der Docker-Provider sagt, dass meine Box nicht kompatibel ist. Das ist richtig, aber ich möchte nicht, dass Docker diese Box benutzt; Ich habe eine Dockerfile, auf die ich für Docker verweisen kann. Ich möchte, dass die Box nur verwendet wird, wenn VirtualBox der Provider ist. Wie kann ich den Docker-Anbieter veranlassen, die Box-Deklaration zu ignorieren oder die Box-Deklaration nur dann ausführen lassen, wenn VirtualBox der Anbieter ist?Wie schreibt man eine Vagrant-Datei für mehrere Anbieter, die jeweils eine andere Box verwenden?
Das ist mein Vagrantfile:
Vagrant.require_version ">= 1.7.0"
Vagrant.configure('2') do |config|
PROJECT_ROOT = File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..'))
config.vm.provider "docker" do |d|
d.build_dir = "."
d.has_ssh = true
end
config.vm.box = "ubuntu/trusty64" # <--------- this is the line the Docker provider chokes on
config.vm.provider "virtualbox" do |v|
v.gui = true
end
config.vm.network :forwarded_port, guest: 80, host: 9002
config.vm.network :forwarded_port, guest: 9000, host: 9000
config.vm.network :forwarded_port, guest: 9001, host: 9001
config.vm.synced_folder PROJECT_ROOT, '/srv'
config.vm.provision :ansible do |ansible|
ansible.verbose = "v"
ansible.playbook = 'provisioning/playbook.yml'
end
end
Haben Sie dies auszuführen versuchen? Es funktioniert nicht. 'config.vm.provider' ist keine bedingte Anweisung. Wenn die Datei analysiert wird, sind alle Aufrufe von 'config.vm.provider'. – hekevintran
@hekevintran, überprüfen Sie bitte die aktualisierte Antwort –
Ah gut finden, Override ist die Antwort! Vielen Dank! – hekevintran