If you are trying to use another provider with your current vagrant machine, you will likely get this error:
An active machine was found with a different provider. Vagrant
currently allows each machine to be brought up with only a single
provider at a time. A future version will remove this limitation.
Until then, please destroy the existing machine to up with a new
The tricks is to create another machine, but to set it to not start up with your default machine.
config.vm.define "aws", autostart: false do |aws_vm| end
Now, this machine will not get started when you do
vagrant up, but will get started when you do
vagrant up aws.
Next you can add the dummy image so it do not tries to start your machine on aws.
aws_vm.vm.box = "dummy"
Then inside that block you can add your aws provider details, then it would look something like this:
config.vm.define "aws", autostart: false do |aws_vm| aws_vm.vm.box = "dummy" aws_vm.vm.provider :aws do |aws, override| aws.access_key_id = "XXXX" aws.secret_access_key = "XXXX" aws.keypair_name = "XX" aws.instance_type = "m3.medium" aws.security_groups = ["Vagrant"] aws.region = "eu-west-1" aws.ami = "ami-f0b11187" // Ubuntu override.ssh.username = "ubuntu" override.ssh.private_key_path = "~/XX/XX.pem" end end
Now you can both have your VirtuelBox running and spin another box identical up on Amazon EC2.
You run the command like this:
vagrant up aws --provider=aws
If you are spinning up a machine for the first time on EC2, remember to create a Security Group that allow ssh both in and out, and add port 80 for web traffic as well.